黑马程序员技术交流社区
标题:
不能创建内部类实例,调用外部类成员吗?
[打印本页]
作者:
Shimano
时间:
2014-4-12 21:11
标题:
不能创建内部类实例,调用外部类成员吗?
class Outer//外部类
{
int x = 2;
class Inner//内部类
{
void function()
{
System.out.println(getNum());
}
}
public void method()
{
Inner in = new Inner();
in.function();
}
public int getNum()
{
return x;
}
}
class InnerClassDemo//外部其他类
{
public static void main(String[] args)
{
Outer ot = new Outer();
ot.method();
Outer.Inner in = new Outer().new Inner();
in.function();
//in.method();
}
}
复制代码
如代码所示:
内部类方法可以访问外部类方法,外部类成员方法中也可以创建内部类实例,调用内部类方法
我在外部其他类中创建一个内部类实例化对象,用这个对象调用外部类的成员方法,
in.method();编译失败?提示找不到符号... 为什么?
是不是我脑子混沌了,有关概念不清楚?
作者:
shi0000
时间:
2014-4-12 21:38
因为method()方法是属于外部类Outer的,不是属于Inner这个内部类的。
为什么这Outer类中Inner类可以调用method()方法呢?这是因为这个内部类也是一个Outer类的
成员,就是你可以把他看作是Outer类的成员函数了。
而在你创建内部类对象时,不是创建的外部类对象,不会有method()方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2