静态内部类(嵌套类)与非静态内部类
2015-08-03 23:44
375 查看
static inner class be called nested class .我总结除了三个明显的特点(随时补充添加):
1.它可以不依赖于外部类的实例而实例化。 但不能访问外部类的非静态方法。
2.外部类不能直接访问内部类的,不论是静态的还是非静态的方法,变量。 但可以通过实例化inner class 来使用
3.嵌套类只在外部类里面可见。
以下是个例子:
public class StaticTest{
private static String name = "woobo";
private String num = "X001"
;
static class Person{ // 静态内部类可以用public,protected,private修饰
// 静态内部类中可以定义静态或者非静态的成员
private String address = "China";
Private Static String x=“as”;
public String mail = "kongbowoo@yahoo.com.cn";//内部类公有成员
public void display(){
//System.out.println(num);//不能直接访问外部类的非静态成员
// 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法)
System.out.println(name);//只能直接访问外部类的静态成员
//静态内部类只能访问外部类的静态成员(包括静态变量和静态方法)
System.out.println("Inner " + address);//访问本内部类成员。
}
}
public void printInfo(){
Person person = new Person();
// 外部类访问内部类的非静态成员:实例化内部类即可
person.display();
//System.out.println(mail);//不可访问
//System.out.println(address);//不可访问
System.out.println(person.address);//可以访问内部类的私有成员
System.out.println(Person.x);// 外部类访问内部类的静态成员:内部类.静态成员
System.out.println(person.mail);//可以访问内部类的公有成员
}
public static void main(String[] args){
StaticTest staticTest = new StaticTest();
staticTest.printInfo();
}
}
1.它可以不依赖于外部类的实例而实例化。 但不能访问外部类的非静态方法。
2.外部类不能直接访问内部类的,不论是静态的还是非静态的方法,变量。 但可以通过实例化inner class 来使用
3.嵌套类只在外部类里面可见。
以下是个例子:
public class StaticTest{
private static String name = "woobo";
private String num = "X001"
;
static class Person{ // 静态内部类可以用public,protected,private修饰
// 静态内部类中可以定义静态或者非静态的成员
private String address = "China";
Private Static String x=“as”;
public String mail = "kongbowoo@yahoo.com.cn";//内部类公有成员
public void display(){
//System.out.println(num);//不能直接访问外部类的非静态成员
// 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法)
System.out.println(name);//只能直接访问外部类的静态成员
//静态内部类只能访问外部类的静态成员(包括静态变量和静态方法)
System.out.println("Inner " + address);//访问本内部类成员。
}
}
public void printInfo(){
Person person = new Person();
// 外部类访问内部类的非静态成员:实例化内部类即可
person.display();
//System.out.println(mail);//不可访问
//System.out.println(address);//不可访问
System.out.println(person.address);//可以访问内部类的私有成员
System.out.println(Person.x);// 外部类访问内部类的静态成员:内部类.静态成员
System.out.println(person.mail);//可以访问内部类的公有成员
}
public static void main(String[] args){
StaticTest staticTest = new StaticTest();
staticTest.printInfo();
}
}
相关文章推荐
- BOOL 类型
- [Leetcode 47, Hard] Permutations II
- CSS3 -webkit-transform(元素变换)
- maven的resource配置(一)
- hdu5314 Happy King
- CSS3 transform 属性
- 类的继承
- 自动登陆ftp服务器的批处理怎么写
- CSS3详解:transform
- OpenGL: 渲染管线理论
- C++ 函数重载
- linux tar命令
- PHP-逻辑运算符
- hd1016 Prime Ring Problem
- static /const
- POJ 1741 Tree + POJ 1987 Distance Statistics【树的点分治】
- linux编程常用的函数
- HDU 5336——XYZ and Drops——————【广搜BFS】
- 杭电2097 sky数水过
- jquery 怎么获取服务器控件ID