黑马程序员技术交流社区
标题:
内部类变量访问问题
[打印本页]
作者:
litaojisuanji
时间:
2014-1-5 22:46
标题:
内部类变量访问问题
本帖最后由 litaojisuanji 于 2014-1-7 00:45 编辑
class Outer
{
private int num = 10;
public void method()
{
final int num = 20;
//定义类
class Inner
{
int num = 30;
public void show()
{
int num = 40;
System.out.println(Outer.this.num+"***"+this.num+"***"+num);
//分别打印出10,30,40,那怎么打印出20
}
}
//创建对象
Inner i = new Inner();
i.show();
}
}
class InnerTest
{
public static void main(String[] args)
{
Outer o = new Outer();
o.method();
}
}
复制代码
怎么打印20
作者:
张洪慊
时间:
2014-1-6 00:48
public void method()
{
final int num = 20;
final int numCopy=num;//采用折中办法,我定义一个变量其值与num相同,哈哈没有技术含量
//定义类
class Inner
{
int num = 30;
public void show()
{
int num = 40;
System.out.println(Outer.this.num+"***"+this.num+"***"+num+"****"+numCopy);
//分别打印出10,30,40,那怎么打印出10
}
}
//创建对象
Inner i = new Inner();
i.show();
}
复制代码
作者:
小悠久
时间:
2014-1-6 09:10
你这个代码没问题啊,我试啦一下能够打印出10,这是我运行的截图
捕获.JPG
(128.81 KB, 下载次数: 6)
下载附件
2014-1-6 09:10 上传
作者:
IT人
时间:
2014-1-6 11:02
刚才运行了一下你的程序,打印结果10***30***40,没有错。不知道楼主想问的什么问题?在System.out.println(Outer.this.num+"***"+this.num+"***"+num);中打印外部类的成员成员变量num,因为持有外部类的引用,这样写Outter.this.num是对的!不知道楼主的问题疑惑是啥???请说明白点
作者:
肖银
时间:
2014-1-6 18:58
你问的应该是怎么打印出20吧!
class Outer
{
private int num = 10;
public void method()
{
/*把num改为大写,因为被final修饰过后变成了常量,
而常量是可以通过常量名直接访问的.如果是小写,
那么它将会旁被Inner类show()方法中的变量num覆盖掉
*/
final int NUM = 20;
//定义类
class Inner
{
int num = 30;
public void show()
{
int num = 40;
System.out.println(Outer.this.num+"***"+ NUM +"***"+this.num+"***"+num);
//分别打印出10,30,40,那怎么打印出20
}
}
//创建对象
Inner i = new Inner();
i.show();
}
}
class Demo
{
public static void main(String[] args)
{
Outer o = new Outer();
o.method();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2