黑马程序员技术交流社区

标题: 不能创建内部类实例,调用外部类成员吗? [打印本页]

作者: Shimano    时间: 2014-4-12 21:11
标题: 不能创建内部类实例,调用外部类成员吗?
  1. class Outer//外部类
  2. {       
  3.         int x = 2;

  4.         class Inner//内部类
  5.         {       
  6.                 void function()
  7.                 {
  8.                         System.out.println(getNum());
  9.                 }
  10.         }
  11.        
  12.         public void method()
  13.         {
  14.                 Inner in = new Inner();
  15.                 in.function();
  16.         }
  17.         public int getNum()
  18.         {
  19.                 return x;
  20.         }
  21.        
  22. }
  23. class InnerClassDemo//外部其他类
  24. {
  25.         public static void main(String[] args)
  26.         {       
  27.                 Outer ot = new Outer();
  28.                 ot.method();
  29.                 Outer.Inner in = new Outer().new Inner();
  30.                 in.function();
  31.                 //in.method();
  32.                
  33.         }
  34. }
复制代码

如代码所示:
        内部类方法可以访问外部类方法,外部类成员方法中也可以创建内部类实例,调用内部类方法
       
        我在外部其他类中创建一个内部类实例化对象,用这个对象调用外部类的成员方法,
        in.method();编译失败?提示找不到符号... 为什么?
        是不是我脑子混沌了,有关概念不清楚?


作者: shi0000    时间: 2014-4-12 21:38
因为method()方法是属于外部类Outer的,不是属于Inner这个内部类的。
为什么这Outer类中Inner类可以调用method()方法呢?这是因为这个内部类也是一个Outer类的
成员,就是你可以把他看作是Outer类的成员函数了。
而在你创建内部类对象时,不是创建的外部类对象,不会有method()方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2