【发布时间】:2016-05-21 15:09:19
【问题描述】:
我们知道内部类的对象只能从封闭类的对象中产生。那么为什么内部类的对象不能在封闭类定义之外调用封闭类的非静态方法呢?
public class OuterClass
{
public class InnerClass
{
public void innerMethodA()
{
outerMethodA(); // This is OK.
new InnerClass().outerMethodA(); // This is not OK.
}
}
public void outerMethodA()
{
System.out.println("This is OuterMethodA");
}
}
public class ExtraClass
{
public void testMethod()
{
OuterClass outerObj = new OuterClass();
OuterClass.InnerClass innerObj = outerObj.new InnerClass();
outerObj.outerMethodA(); // This is OK.
innerObj.outerMethodA(); // This is not. Why is that?
}
}
请原谅任何格式错误或我提出问题的方式。经过一些反对票后,我对其进行了编辑。我已经尽力了。谢谢。
【问题讨论】:
-
我认为这需要代码。我不太确定你的意思。
-
您需要任何类的实例来调用它的非静态方法。内部类不会因为被封闭而神奇地拥有该实例
-
你为什么要做这样的事情?这个问题背后的驱动力是什么?这在什么情况下有意义?
-
我还没有对此进行测试,但我认为在这两种情况下,
outerMethod不是InnerClass的成员。 -
@Tom:这不是重复的。该问题仅涉及从内部类定义中调用外部类方法。
标签: java inner-classes non-static