Inheritance Understand


Inheritance Understand with inner class and inner static class





__________________1
I am static A
I am static B
I am static C
I am static F
I am {} A
I am parameterised constructor A
I am {} B
I am constructor B
I am {} C
__________________2
I am function A
__________________3
30
__________________4
I am {} A
I am parameterised A
__________________5
10
__________________6
20
__________________7
50
__________________8
I am {} A
I am parameterised constructor A
I am {} B
I am constructor B
I am {} C
__________________9
__________________10
I am function C.D
__________________11
I am {} A
I am parameterised constructor A
I am {} B
I am constructor B
__________________12
60
__________________13




class A {
 int i = 10;
 static {
  System.out.println("I am static A");
 }
 {
  System.out.println("I am {} A");
 }

 public A() {
  System.out.println("I am parameterised A");
 }

 public A(int i) {
  this.i = i + 20;
  System.out.println("I am parameterised constructor A");
 }

 void function() {
 System.out.println("I am function A");
 }
}

class B extends A {
 static int i = 10;
 static {
  System.out.println("I am static B");
 }
 {
  System.out.println("I am {} B");
 }

 public B() {
  super(i);
  System.out.println("I am constructor B");
 }
}
class C extends B{

  static class D
     {
   static int i=50;
     }
     class E
     {
      B b=new B();
      
     }
     
     static 
     {
      System.out.println("I am static C");
     }
     {
      System.out.println("I am {} C");
     }
     C(){
      i = i + 10;
     }
}
class F extends C{

 class H extends D
    {
  void function()
     {
   System.out.println("I am function C.D");
     }
    }
    class G extends E 
    {
     int i = 60;
     public G(){
      super();
     }
     
    }
    
    static 
    {
     System.out.println("I am static F");
    }
}

public class Source{
    public static void main(String[] args)
    {
        System.out.println("__________________1");
        A a = new F();
        System.out.println("__________________2");
        a.function();
        System.out.println("__________________3");
        System.out.println(a.i);
        System.out.println("__________________4");
        a=new A();
        System.out.println("__________________5");
        System.out.println(a.i);
        System.out.println("__________________6");
        System.out.println(B.i);
        System.out.println("__________________7");
        System.out.println(C.D.i);
        
        System.out.println("__________________8");
        F f=new F();
        System.out.println("__________________9");
        F.H b=f.new H();
        System.out.println("__________________10");
        b.function();
        System.out.println("__________________11");
        F.G c=f.new G();//this is inner non static class call
        System.out.println("__________________12");
        System.out.println(c.i); 
        System.out.println("__________________13");
    }
}

__________________1
I am static A
I am static B
I am static C
I am static F
I am {} A
I am parameterised constructor A
I am {} B
I am constructor B
I am {} C
__________________2
I am function A
__________________3
30
__________________4
I am {} A
I am parameterised A
__________________5
10
__________________6
20
__________________7
50
__________________8
I am {} A
I am parameterised constructor A
I am {} B
I am constructor B
I am {} C
__________________9
__________________10
I am function C.D
__________________11
I am {} A
I am parameterised constructor A
I am {} B
I am constructor B
__________________12
60
__________________13



Sequence is ---> static block -->simple block ---> 




class A {
 int i = 10;
 static {
  System.out.println("I am static A");
 }
 {
  System.out.println("I am {} A");
 }

 public A() {
  System.out.println("I am parameterised A");
 }

 public A(int i) {
  //Constructor incrementing static variable or simple variable
  this.i = i + 20;
  System.out.println("I am parameterised constructor A");
 }

 void function() {
  System.out.println("I am function A");
 }

int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.

  A(String x,String y){
   //Constructor incrementing static variable b
   b++;
  }

   public void showData(){
      System.out.println("Value of a = "+a);
      System.out.println("Value of b = "+b);
   }
   
  
 
}
class B extends A {
 static int i = 10;
 static {
  System.out.println("I am static B");
 }
 {
  System.out.println("I am {} B");
 }

 public B() {
  super(i);
  System.out.println("I am constructor B");
 }
}
class C extends B{

  static class D
     {
   static int i=50;
     }
     class E
     {
      B b=new B();
      
     }
     
     static 
     {
      System.out.println("I am static C");
     }
     {
      System.out.println("I am {} C");
     }
     C(){
      i = i + 10;
     }
}
class F extends C{

 class H extends D
    {
  void function()
     {
   System.out.println("I am function C.D");
     }
    }
    class G extends E 
    {
     int i = 60;
     public G(){
      super();
     }
     
    }
    
    static 
    {
     System.out.println("I am static F");
    }
}

public class Source{
    public static void main(String[] args)
    {
        System.out.println("__________________1");
  //this will print first static block and next with out static block from A to F
        A a = new F();
        System.out.println("__________________2");
        a.function();
        System.out.println("__________________3");
        System.out.println(a.i);
        System.out.println("__________________4");
        a=new A();
        System.out.println("__________________5");
        System.out.println(a.i);
        System.out.println("__________________6");
        System.out.println(B.i);
        System.out.println("__________________7");
        System.out.println(C.D.i);
        
        System.out.println("__________________8");
        F f=new F();
        System.out.println("__________________9");
  //this is inner non static class call
        F.H b=f.new H();
        System.out.println("__________________10");
        b.function();
        System.out.println("__________________11");
  //this is inner non static class call
        F.G c=f.new G();
        System.out.println("__________________12");
        System.out.println(c.i); 
        System.out.println("__________________13");
  // static inner class declaration 
  C.D innerTwo=new C.D();  
  System.out.println(innerTwo.i);
  // this is inner super class with parameterised argument pass
  B b1=new B();
  C c1=new C(b1);
  System.out.println(c1.a.i);
  
    }
}




    



Other Links:
Inheritance Understand Part 1
Inheritance Understand Part 2
Inheritance Understand Part 3
Inheritance Understand Part 4
GENERATING KEYSTORE FILES




Previous
Next Post »