内部类的继承
因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,会很复杂。问题在于:那个指向外围类对象的引用必须被初始化,而在导出类中不再存在可连接的默认对象。
内部类可以被覆盖嘛?
package com2002;
/**
* Created by Panda on 2018/6/11.
*/
class Egg {
private Yolk yolk;
protected class Yolk {
public Yolk () {
System.out.println("Egg.Yolk()" );
}
}
public Egg () {
System.out.println("New Egg()" );
yolk = new Yolk();
}
}
public class BigEgg extends Egg {
public class Yolk {
public Yolk () {
System.out.println("BigEgg Yolk()" );
}
}
public static void main (String[] args) {
new BigEgg();
}
/**
* New Egg()
Egg.Yolk()
*/
}
package com2002;
/**
* Created by Panda on 2018/6/11.
*/
class Egg2{
protected class Yolk {
public Yolk (){
System.out.println("Egg2.Yolk()" );
}
public void f (){
System.out.println("Egg2.Yolk.f()" );
}
}
private Yolk yolk=new Yolk();
public Egg2 (){
System.out.println("New Egg2()" );
}
public void insertYolk (Yolk yolk){this .yolk=yolk;}
public void g (){yolk.f();}
}
public class BigEgg2 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 BigEgg2 (){insertYolk(new Yolk());}
public static void main (String[] args) {
Egg2 egg2=new BigEgg2();
egg2.g();
}
/**
* Egg2.Yolk()
New Egg2()
Egg2.Yolk()
BigEgg2.Yolk()
BigEgg2.Yolk.f()
*/
}