Source of Qd073.java


  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: */