class Base
class Extension extends Base
public class Qd073
2: class Base {
3: int i;
4: Base() {
5: System.out.println("\nEntering Base constructor: i = " + i);
6: add(1);
7: System.out.println("Leaving Base constructor: i = " + i);
8: }
9: void add(int v) {
10: System.out.println("\nEntering Base add: i and v = " + i + " " + v);
11: i += v;
12: System.out.println("Leaving Base add: i and v = " + i + " " + v);
13: }
14: void print() {
15: System.out.println(i);
16: }
17: }
18: class Extension extends Base {
19: Extension() {
20: System.out.println("\nEntering Extension constructor: i = " + i);
21: add(2);
22: System.out.println("Leaving Extension constructor: i = " + i);
23: }
24: void add(int v) {
25: System.out.println("\nEntering Extension add: i and v = " + i + " " + v);
26: i += v*2;
27: System.out.println("Leaving Extension add: i and v = " + i + " " + v);
28: }
29: }
30: public class Qd073 {
31: public static void main(String args[]) {
32: System.out.println("Hello"); new Base(); System.out.println("Hello");
33: System.out.println("Hello"); new Extension(); System.out.println("Hello");
34: bogo(new Extension());
35: }
36: static void bogo(Base b) {
37: b.add(8);
38: b.print();
39: }
40: }
42: /*Output:
43: Entering Base constructor: i = 0
45: Entering Extension add: i and v = 0 1
46: Leaving Extension add: i and v = 2 1
47: Leaving Base constructor: i = 2
49: Entering Extension constructor: i = 2
51: Entering Extension add: i and v = 2 2
52: Leaving Extension add: i and v = 6 2
53: Leaving Extension constructor: i = 6
55: Entering Extension add: i and v = 6 8
56: Leaving Extension add: i and v = 22 8
57: 22
58: */