黑马程序员技术交流社区
标题:
内部类问题
[打印本页]
作者:
遮天
时间:
2014-6-7 09:46
标题:
内部类问题
本帖最后由 遮天 于 2014-6-12 16:19 编辑
/*
内部类
*/
class Outer //声明外部类
{
private String name;
class Inner //声明内部类
{
int age;
Inner(String n, int a)
{
name = n;
age = a;
}
void function()
{
System.out.println("姓名:"+name+"____年龄:"+age);
}
}
void method()
{
Inner in = new Inner("脚本小子", 12);
in.function();
}
}
class Demo
{
public static void main(String[] args)
{
Outer o = new Outer();
o.method();
}
}
为什么内部类的构造函数写成下面的情况时会错?不懂求解......
Inner(String name, int age)
{
this.name = name;
this.age = age;
}
复制代码
作者:
王琪
时间:
2014-6-7 10:06
我觉得:
1.内部类可以直接调用外部的属性和方法,也许是因为这个同学你才这样尝试了一下,
2.但是this.调用的不是调用的外部的属性,他会调用本类的属性,但是内部类中没有这个属性,所以会出错,
3.可以调用外部属性,不代表拥有外部属性
不知这样说对吗?
作者:
woshihq
时间:
2014-6-7 10:32
我这么说吧,一个内部类相当于外部类的非static成员(当然前提你的内部类是非static),那你用this.name岂不是调用了外部类的本身name吗!!!显然你将值赋给了外部类的name和age,但是你的age又没有定义
作者:
谭荣强
时间:
2014-6-8 04:31
this.name = name; this.age = age;
作者:
谭荣强
时间:
2014-6-8 04:35
this.name = name;
this.age = age;这句没有错
第一句错了。因为name是外部类的成员属性,要用外部类名.this.属性名来访问。即:Outer.this.name = name;
ps:this.name中this是本类对象,这个本类在本代码中表示内部类。所以找不到name变量。
作者:
EDDY_Liang
时间:
2014-6-8 09:14
学习了。。楼上的大神们的各个解释都看了还是没看懂,谢谢楼主分享。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2