35 lines
854 B
Java
35 lines
854 B
Java
|
//: innerclasses/BigEgg2.java
|
|||
|
// <20>2015 MindView LLC: see Copyright.txt
|
|||
|
// Proper inheritance of an inner class.
|
|||
|
import static com.mindviewinc.util.Print.*;
|
|||
|
|
|||
|
class Egg2 {
|
|||
|
protected class Yolk {
|
|||
|
public Yolk() { print("Egg2.Yolk()"); }
|
|||
|
public void f() { print("Egg2.Yolk.f()");}
|
|||
|
}
|
|||
|
private Yolk y = new Yolk();
|
|||
|
public Egg2() { print("New Egg2()"); }
|
|||
|
public void insertYolk(Yolk yy) { y = yy; }
|
|||
|
public void g() { y.f(); }
|
|||
|
}
|
|||
|
|
|||
|
public class BigEgg2 extends Egg2 {
|
|||
|
public class Yolk extends Egg2.Yolk {
|
|||
|
public Yolk() { print("BigEgg2.Yolk()"); }
|
|||
|
@Override
|
|||
|
public void f() { print("BigEgg2.Yolk.f()"); }
|
|||
|
}
|
|||
|
public BigEgg2() { insertYolk(new Yolk()); }
|
|||
|
public static void main(String[] args) {
|
|||
|
Egg2 e2 = new BigEgg2();
|
|||
|
e2.g();
|
|||
|
}
|
|||
|
} /* Output:
|
|||
|
Egg2.Yolk()
|
|||
|
New Egg2()
|
|||
|
Egg2.Yolk()
|
|||
|
BigEgg2.Yolk()
|
|||
|
BigEgg2.Yolk.f()
|
|||
|
*///:~
|