Polymorphism (Java)
Polymorphic” literally means “of multiple shapes” and in the context of OOP, polymorphic means “having multiple behavior.
A polymorphic method results in different actions depending on the object are referenced, also known as late binding or run-time binding.
For example 
public class Employee {
       private int id;
       private String name;
         //parameterized constructor
         public Employee(int id, String name){
             this.id = id;
             this.name = name;
         }
         //default constructor
         public Employee(){
                id = 10;
                name = "not set";
         }
         public void display(){
                System.out.println("Employee id:" + id + " name:" + name);
      }
}
public class Teacher extends Employee {//here Teacher extending(inheriting) the Employee class
   private String qualification;
   //default constructor
   public Teacher () {
        //implicit call to superclass default constructor          
        qualification = "";     
   }
   //parameterized constructor
   public Teacher(int id, String name, String qual){
      super(id,name); //call to superclass(Employee) constructor must be in first line       
      qualification = qual;
   }
   public void display(){//same name method but here is polymorphic in nature
        super.display(); //call to superclass(Employee) display method
        System.out.println("Qualifications :" + qualification);
   }
}
public class Test {
  public static void main(String[] args) {
  //creating Employee class references
 Employee reference1 , reference2;
        reference1 = new Employee(18, "Maverick");
        reference1.display();//call to Employee display method
 //Employee object can hold Teacher class object because it is a child class
        reference2 = new Teacher(13,"Tom Cruise","Actor");
        reference2.display();//call to Teacher display method
 //But if you hold the Employee object to Teacher it would give you ClassCastException
Teacher teacher;
       teacher = (Teacher)new Employee(34, "Maryam");//Casting To Teacher
teacher.display();
}
}

 
 
 
 
0 comments:
Post a Comment