Mega Code Archive

 
Categories / Java Tutorial / Class Definition
 

Combining composition and inheritance

class A {   A(int i) {     System.out.println("A constructor");   } } class SubA extends A {   SubA(int i) {     super(i);     System.out.println("SubA constructor");   } } class B {   B(int i) {     System.out.println("B constructor");   } } class SubB1 extends B {   SubB1(int i) {     super(i);     System.out.println("SubB1 constructor");   } } class SubB2 extends B {   SubB2(int i) {     super(i);     System.out.println("SubB2 constructor");   } } class SubB3 extends B {   SubB3(int i) {     super(i);     System.out.println("SubB3 constructor");   } } // A cultural way of doing something: class C {   C(int i) {     System.out.println("C constructor");   } } class SubC extends C {   private SubB1 subB1;   private SubB2 subB2;   private SubB3 subB3;   private SubA subA;   public SubC(int i) {     super(i + 1);     subB1 = new SubB1(i + 2);     subB2 = new SubB2(i + 3);     subB3 = new SubB3(i + 4);     subA = new SubA(i + 5);     System.out.println("SubC constructor");   } } public class MainClass{   public static void main(String[] args) {     SubC x = new SubC(9);   } } C constructor B constructor SubB1 constructor B constructor SubB2 constructor B constructor SubB3 constructor A constructor SubA constructor SubC constructor