diff --git a/Chapter7/Dynamic_Disptach_Demo_2.java b/Chapter7/Dynamic_Disptach_Demo_2.java new file mode 100644 index 0000000..9babea9 --- /dev/null +++ b/Chapter7/Dynamic_Disptach_Demo_2.java @@ -0,0 +1,19 @@ + +public class Dynamic_Disptach_Demo_2 { + + public static void main(String[] args) { + + Sup superOb = new Sup(); + + superOb.who(); // In each case, the version of who() to call is determined at run time by ... + + superOb = new Sub1(); + superOb.who(); // ... the type of object being referred to. + + superOb = new Sub2(); + superOb.who(); + + + } + +} diff --git a/Chapter7/SupSubRef2.java b/Chapter7/SupSubRef2.java new file mode 100644 index 0000000..3a9a0a3 --- /dev/null +++ b/Chapter7/SupSubRef2.java @@ -0,0 +1,41 @@ +// A superclass reference can refer to a subclass object. + +class X3 { + int a; + + public X3(int i) { + // TODO Auto-generated constructor stub + + a = i; + } +} + +class Y3 extends X3 { + int b; + + public Y3(int i, int j) { + // TODO Auto-generated constructor stub + super(j); + b = i; + } +} + +public class SupSubRef2 { + + public static void main(String[] args) { + + X3 x3 = new X3(10); + Y3 y3 = new Y3(5, 6); + + System.out.println("X.a: " + x3.a); + + x3 = y3; + System.out.println("X.a: " + x3.a); + + // X references know only about X members + x3.a = 19; // OK +// x3.b = 27; // Error, X does not have a b member. + + } + +}