内部类的继承
- 因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,会很复杂。问题在于:那个指向外围类对象的引用必须被初始化,而在导出类中不再存在可连接的默认对象。
内部类可以被覆盖嘛?
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()
*/
}