毕老师的 面向对象基础 第9天 面向对象(静态内部类) 最后的第二个注意
如何在外部类的静态方法中访问内部类,讲解提到:
“注意: 当外部类中静态方法访问内部类时,内部类也必须是static的”这一条注意有些纰漏。
因为如果在外部类的静态方法中创建了内部类的对象 即使内部类不是static的 也可以用这个对象调用该内部类的方法:
如下,在 class B中使用static void testB() 静态方法访问内部类 InnerB 的方法 innerBMethod()。
在testB()方法中创建内部类的对象(内部类不是static也可以创建对象)并调用内部类的方法: new B().new InnerB().innerBMethod();
这样就不必将内部类改成static了
所以从外部类的静态方法中方访问内部类时,可以将内部类改成static的或者使用 new 外部类类名().内部类类名().内部类成员 这种方式创建内部类对象然后访问内部类。 其实前者只是因为内部类改为static 就不需要用创建外部对象了, 相当于: new 外部类类名.内部类类名().内部类成员,而内部类本身又持有外部类的引用 所以连外部类的类名也可以省了 就是直接写成: new 内部类类名().内部类成员
- class B{
- class InnerB {
- void innerBMethod(){
- System.out.println("innerBMethod");
- }
- }
-
- public static void testB(){
- new B().new InnerB().innerBMethod();
- }
- }
- public class staticInnnerDemo {
- public static void main(String args[]){ B b = new B();
- b.testB();
- }
- }
复制代码
目前Java基础只复习到这里,也许后边视频中会对此有补充,但还没有看到。
此处的理解可能有误,所以期待各位同学的补充。
首次发帖,代码的格式不知道 怎么缩进。。。:dizzy:
|