Migrated from logicaletter.com

Superclass : A parent class Subclass : A child class that inherits Superclass

    class A{    //superclass or parent class
    //some generic code
    }
    class B extends A{ //subclass or child class of A
    //some generic code 
    }

it may seem esoteric at first, but its true that superclass variable can reference a subclass object .This aspect is quite useful when superclass object needs parameters same as subclass object which is not part of that superclass object. Let’s take a example , Suppose Parent A is eligible for being a parent but does not have a child. Child A is child of Parent B . Parent A can have genes of Parent B , but not all of Child A. This statement is true in java . Here is the code to prove the statement.

parentclass.java

 class parentClass {
   private String name;
   private String initials;
    
    parentClass(String name ,String initials){
        this.name = name;
        this.initials = initials;
        System.out.println("che ");
        
        
    }
    parentClass(){
        name="n/a";
        initials="n/a";
    }
    String show(){
        return name+" "+initials;
        
    }
}

2.childclass.java

class childclass extends parentClass  {
    private int age;
    childclass(String name,String initials,int age){
       super(name,initials);
       this.age = age;
    }
    public int showAge(){
        return age;
        
    }
}

3.InheritanceExample.java

public class InheritanceExample {

 public static void main(String[] args){
     childclass child = new childclass("barsha","BT",7);
     parentClass Parent =new parentClass();
     System.out.println(Parent.show());
     System.out.println(child.showAge());
     
     //till this point the output will be n/a n/a and 7as there is no parameter passed for parentClass
     //Now lets try something new like Superclass referencing subClass
     
     Parent = child;
     System.out.println(Parent.show()); // this will be valid as show is the part of Parent class 
     //the output will be barsha BT
     //System.out.println(Parent.showAge()); this wont be valid as showAge is not the part of superclass
     //actually Parent does not know anything about its child i.e what is happening within it so child part will not be transferred.
     
            
 }    
}

  • Take a look at inheritanceExample.java.
    • When Superclass references Subclass it is important to remember that it is the type of reference variable-not the type of objects that it refers to
    • that determines what members can be accessed. Superclass A can take reference from Superclass B through Subclass B but it can’t access any part of Subclass B. That is the reason why showAge() can’t be accessed by Parent instance, System.out.println(Parent.showAge()); I hope it is making sense since i have no or very less traffic when i am writing this so when i review my blog i hope i understand what i am writing right now.