我写了以下代码。我可以访问类NestedClass2的(非静态)方法m1()吗?
class OuterClass
{
static class NestedClass
{
static class NestedClass1
{
class NestedClass2
{
void m1()
{
System.out.println("Non-static method of NestedClass2");
}
}
}
}
}
答案 0 :(得分:1)
为了从另一个独立的类调用NestedClass2.m1()
(在此示例中,我从Main
调用它),您需要创建NestedClass1
和NestedClass2
的实例。< / p>
在下面的示例中,查看如何创建内部类的non-static
类实例(nc1.new NestedClass2()
)与如何创建内部类的static
实例( new OuterClass.NestedClass.NestedClass1()
)。
public class Main {
public static void main(String[] args) {
OuterClass.NestedClass.NestedClass1 nc1 = new OuterClass.NestedClass.NestedClass1();
OuterClass.NestedClass.NestedClass1.NestedClass2 nc2 = nc1.new NestedClass2();
nc2.m1();
}
}
答案 1 :(得分:0)
要实例化一个内部类,我们必须首先实例化它的封闭 类。然后,使用以下语法在外部对象中创建内部对象:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
所以,
使用上面给出的语法创建NestedClass2的实例。
class AnyOtheClass {
public static void main(String args[])
{
OuterClass.NestedClass.NestedClass1 objNestedClass1= new OuterClass.NestedClass.NestedClass1();
OuterClass.NestedClass.NestedClass1.NestedClass2 objNestedClass2= objNestedClass1.new NestedClass2();
objNestedClass2.m1();
}
}