class App {
   public static void main(String[] args) {
//    C rc1 = new C();  // If just instance creation,
                        // no interface initialization occurs

//    System.out.println("The Int2 var is " + rc1.IMPD2.getData());
//    System.out.println("The CInt1 var is " + rc1.IMPP.data);
                                     // just CInt1 gets initialized

//    System.out.println("The Int1 var is " + rc1.IMPD.getData());
                                     // Error: ambiguity
//    System.out.println("The Ambig var is " + Int1.IMPD.getData());
                                     // use this to resolve it
   }
}

class AD {
   int data;
   { System.out.println("The initial ADate data is " + data ); }

   AD() {}

   AD(int d) {
      data = d;
      System.out.println("The AD data is " + data);
   }

   int getData() { return data; }
}

class BD {
   int data;
   BD(int d) {
      data = d;
      System.out.println("The BD data is: " + data); }
}

interface Int1 {
   AD IMPD = new AD(5);
}

interface CInt1 extends Int1 {
   BD IMPP = new BD(100);   // public, static, final
}

interface Int2 {
   AD IMPD = new AD();
   AD IMPD2 = new AD(1);
}

class C implements Int2, CInt1 {}
