java內部類基礎(內部類繼承關係 或外部類總體繼承)

class WithInner {
 class Inner {
  Inner() {
   System.out.println("this is a constructor in WithInner.Inner");
  };
 }
} this

//默認無參構造器很差使 。有參構造器,傳遞外部類,用外部類的supper()去構造。 對象

public class InnerExtendsT extends WithInner.Inner {
 //InnerExtendsT() {} // Won't compile
 //必須傳遞 外部類的引用,並調用supper()才能夠。
 InnerExtendsT(WithInner wi) {
  wi.super();
  System.out.println("this is a constructor in InheritInner");
 } 繼承

 public static void main(String[] args) {
  WithInner wi = new WithInner();
  InnerExtendsT ii = new InnerExtendsT(wi);
 }
} it

 

———————————————————————————————————————————— class

class Egg {
 private Yolk y;// 蛋黃
 protected class Yolk {
  public Yolk() {
   System.out.println("Egg.Yolk()");
  }
 } 重構

 public Egg() {
  System.out.println("New Egg()");
  y = new Yolk();
 }
} 命名空間

//當你繼承了某個外圍類的時候,內部類並無發生什麼特別神奇的變化。這兩個內部類是徹底獨立的兩個實體,各自在本身的命名空間內。
public class MultiExtends extends Egg {
 public class Yolk {//重構了 它自身的 內部類,可是 實際上 基類的內部類並無變化  雖然是大雞蛋,可是仍是小蛋黃
  public Yolk() {
   System.out.println("BigEgg.Yolk()");
  }
 } 引用

 public static void main(String[] args) {
  new MultiExtends();
 }
} 命名

—————————————————————————————————————————————— static

 

class Egg2 {
 protected class Yolk {
  public Yolk() {
   System.out.println("inner class initialize beforing......class initialing....");
   System.out.println("Egg2.Yolk()");
  }

  public void f() {
   System.out.println("Egg2.Yolk.f()");
  }
 }

 public Egg2() {
  System.out.println("New Egg2()");
 }
 
 private Yolk y ;// = new Yolk();構造過程以前進行引用對象的處理。
 public void insertYolk(Yolk yy) {
  y = yy;
 }

 public void g() {
  if(y == null){
   y = new Yolk();//運用的時候,再建立。
  }
  y.f();
 }
}

public class MultiExtends2 extends Egg2 {
 
 public class Yolk extends Egg2.Yolk {//強制繼承 雞蛋的蛋黃
  public Yolk() {
   System.out.println("BigEgg2.Yolk()");
  }

  public void f() {
   System.out.println("BigEgg2.Yolk.f()");
  }
 }
 
 /**
  * 父類對象的引用的處理
  */
 public MultiExtends2() {
  System.out.println("kkkkkk");
  insertYolk(new Yolk());  //從新設置以後,調用新的對象。
 }

 public static void main(String[] args) {
  Egg2 e2 = null;
  e2 = new MultiExtends2();
  e2.g();
 }
}

————————————————類嵌套——————————————————————————

public class MultiNestingAccess {
 public static void main(String[] args) {
  MNA mna = new MNA();
  MNA.A mnaa = mna.new A();
  MNA.A.B mnaab = mnaa.new B();
  mnaab.h();
 }
}

class MNA {
 private void f() {
 }

 class A {
  private void g() {
  }

  public class B {    void h() {     g();     f();    }   }  } }

相關文章
相關標籤/搜索