A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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();编译失败?提示找不到符号... 为什么?
        是不是我脑子混沌了,有关概念不清楚?

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

1 个回复

倒序浏览
因为method()方法是属于外部类Outer的,不是属于Inner这个内部类的。
为什么这Outer类中Inner类可以调用method()方法呢?这是因为这个内部类也是一个Outer类的
成员,就是你可以把他看作是Outer类的成员函数了。
而在你创建内部类对象时,不是创建的外部类对象,不会有method()方法。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马