问答详情
源自:7-6 Java 中的成员内部类

为什么用 in.print(); 不能访问内部类变量


public class Classdemo {
 public static void main(String[] args) {
 outer out=new outer();
 out.show();
 outer.inner in=out.new inner();
 in.print();
 }

}
class outer{
 int num=3;
 String name="zhangsan";
 void show() {
  System.out.println("num="+num+"  "+"name"+name);
  }
  class inner{
   int num=8;
   String name="lisi";
   void print() {
    show();
    
  }
  }
}


提问者:幕布斯2575146 2018-05-10 16:49

个回答

  • 流动的风与雪
    2018-05-10 17:10:25
    已采纳

    不太懂你意思,我运行程序,没什么错误,具体代码我完全没看,你要是真心想解决问题就描述清楚,你要实现什么功能,这样才能帮你啊,大兄弟!

  • 流动的风与雪
    2018-05-10 19:23:22

    你应该想的是inner为outer的内部类,所以inner可以直接使用outer的方法来输出自己的值吧。

    https://img1.mukewang.com/5af426fc00014c4e03960640.jpg

    这是我找的那一节,注意第二条,内部类可以访问外部类的方法,而并没有说内类可以直接使用外类的方法来输出自己的值吧。你可能没意识到,这是继承的概念。

    有两种解决方法

    1、如果你不想继承,直接把inner的print方法的方法体改为”System.out.println("num="+num+"  "+"name"+name);“,应该可以按你的要求运行。

    2、我不知道你学过继承没,你想用继承的话,我把代码改成如下,你可以运行一遍。

    public class Classdemo{
      public static void main(String[] args) {
      outer out=new outer();
      out.show();
      outer.inner in=out.new inner();
       in.num=8;
       in.name="lisi";
      in.show();
      }
     }
    class outer{
     int num=3;
     String name="zhangsan";
     void show() {
     System.out.println("num="+num+"  "+"name"+name);
     }
     class inner extends outer{}
     }


    有什么问题欢迎回复