Java内部类三部曲之静态内部类

来源:互联网 发布:mac下网络组网图 编辑:程序博客网 时间:2024/05/22 02:27


public class StaticInnerDemo {
/**
* 使用Static修饰的成员内部类叫做静态内部类 静态内部类跟外部类没有任何关系,只是在生成类名和类定义时有影响。
* 静态内部类可以看做与外部类平级的类,使用方式与外部类平级的类完全相同 创建静态内部类的实例使用 : 外部类名.内部类名 实例名=new
* 外部类名.内部类名(参数)。 限制: 静态内部类不能与外部类重名
* 静态内部类不能访问外部类的非静态的属性和方法。外部类不能访问内部类的非静态的属性和方法(静态的只能访问静态的)
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 构造一个静态内部类对象
// Outer2.MemberInner2 inner=new Outer2.MemberInner2();
// inner.innershow();
Outer2 outer = new Outer2();
outer.outershow();
}


}


class Outer2 {
private String name = "张三";
private int num1 = 10;
private static int num3 = 100;


public void outershow() {
System.out.println(name);
System.out.println(num1);
// 访问内部类非静态的成员,要先产生内部类对象,通过对象.属性名
MemberInner2 inner = new MemberInner2();
System.out.println(inner.name);
// 访问内部类静态的成员,直接通过类名.属性
System.out.println(MemberInner2.num3);


}


public static class MemberInner2 {


private String name = "李四";
private int num2 = 20;
private static int num3 = 300;


public void innershow() {
// 内部类不能访问外部类的非静态成员
// System.out.println(Outer2.this.name);
// 访问外部类静态的成员要使用类名.属性
System.out.println(Outer2.num3);
System.out.println(num2);


}
}
}