內部類及靜態內部類的例項化
內部類的例項化
如果內部類未宣告為static,在例項化時首先需要new一個外部類的物件。並通過p.new Inner()的方式new 內部類,表明這個內部類指向該外部類。內部類的class型別為:Parent.Inner,而不是p.Inner,這個需要和new的方式區分開。
public class Test {
public static void main(String[] args) {
Parent p = new Parent();
Parent.Inner i = p.new Inner();
i.print();
}
}
class Parent {
class Inner {
public void print() {
System.out.println("xxx");
}
}
}
靜態內部類的例項化
靜態內部類與普通內部類的區別在於,靜態內部類的物件是不指向與某個具體的外部類物件,所以在建立物件時不需要建立外部類物件。並且在new的時候是通過 new Parent.Inner()方式,而不是Parent.new Inner()。不要和內部類的例項化搞混了。class的宣告和內部類是一樣的,都是Parent.Inner
public class Test {
public static void main(String[] args) {
Parent.Inner i = new Parent.Inner();
i.print();
}
}
class Parent {
staticclass Inner {
public void print() {
System.out.println("xxx");
}
}
}