外部其他类调用一个类的外部类分为非静态内部类函数,静态内部类非静态函数,静态内部类静态函数
在外部其他类中访问非静态内部类函数访问方式是
Outer.Inner d = new Outer().new Inner(); 用变量d调用内部类的方法
在外部其他类中如何直接访问静态内部类中的非静态成员呢?
Outer.Inner d = new Outer.Inner();用变量d调用内部类的方法
或者new Outer.Inner().function();
在外部其他类中如何直接访问静态内部类中的静态成员呢?
直接访问 Outer.Inner.function();
楼主给的程序段中:
o.method()方法调用Outer里的method方法。而mehod方法中又调用了静态内部类中的非静态方法show
这就是在外部其他类中如何直接访问静态内部类中的非静态成员的问题
Outer.Inner d = new Outer.Inner();再用变量d调用内部类的方法
或者new Outer.Inner().show();
再看看内部类的访问规则:
1).内部类可以直接访问外部类中的成员,包括私有。
之所以可以直接访问外部类汇总的成员,因为内部类中持有了一个外部类的引用,格式外部类名.this
(2).外部类要访问内部类,必须建立内部类对象。
这就是为什么在Outer中的method方法访问内部类中的show方法时必须要创建内部类对象,否者,无法从静态上下文中引用非静态 |