为了账号安全,请及时绑定邮箱和手机立即绑定

为什么用 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();
    
  }
  }
}


正在回答

2 回答

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

0 回复 有任何疑惑可以回复我~
#1

幕布斯2575146 提问者

就是我在内部类inner里面调用shouw方法打印的数据为啥不是inner类里面定义的变量,而是outer类里面定义的变量。(打印结果都是 3 和 zhangsan)
2018-05-10 回复 有任何疑惑可以回复我~
#2

幕布斯2575146 提问者

非常感谢!
2018-05-10 回复 有任何疑惑可以回复我~

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

https://img1.sycdn.imooc.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{}
 }


有什么问题欢迎回复

1 回复 有任何疑惑可以回复我~
#1

幕布斯2575146 提问者

好的,看明白了,谢谢你的耐心解答,爱你❤。
2018-05-10 回复 有任何疑惑可以回复我~
#2

流动的风与雪 回复 幕布斯2575146 提问者

嗯嗯,没关系,有问题继续问我,我也在自学Java
2018-05-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信