1. 程式人生 > >內部類及靜態內部類的例項化

內部類及靜態內部類的例項化

內部類的例項化

如果內部類未宣告為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");
  }
 }
}