class Outer {
class Inner {
}
}
public class Demo {
public static void main(String args[]) {
Outer o = new Outer();
Outer.Inner inner = o.new Inner();
}
}
我为Inner
类对象创建引用的方式类似于访问类中的static
成员Outer
?
您能解释一下这背后的机制吗?
我为
Inner
类对象创建引用的方式类似于访问类中的static
成员Outer
完全没有-因为您使用的实例Outer
访问的构造函数,所以Inner
这非常类似于访问类的实例成员而Outer
不是其static
成员。Inner
声明中的类名用其外部类的名称限定,Outer
以避免与顶级类的命名冲突。
原因很容易理解:它Inner
是一个非静态内部类,因此需要引用一个Outer
。它隐式地这样做,但是必须将引用传递给幕后的构造函数。因此,您可以Inner
在的实例上调用的构造函数Outer
。
创建static
类实例的语法与创建常规类实例的语法相似,不同之处在于嵌套类的名称必须以其外部类的名称作为前缀-即遵循以下static
语法:
class Outer {
static class Inner {
}
}
public class Demo {
public static void main(String args[]) {
Outer.Inner inner = new Outer.Inner();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句