Just revisiting and explaining myself Polymorphism concept here through a blog post. The words Polymorphism means multiple forms.
In Java ,Polymorphism means multiple forms of an object. We shall divide this article into 3 sections.
1.Syntax
2.Calling a variable polymorphically.
3.Calling a method polymorphically.
1.SyntaxPermalink Now in polymorphism in Java, the thumb key rule to remember is
super = subPermalink Meaning the variable reference (LHS) must always be a super class reference and the object initialization(RHS) must a sub class.
For Example: class A{
} class B extends A{ } class C extends B{ } class D extends A{ }
So valid and invalid syntax according to the thumb rule will be
A a =new B(); //VALID
B b=new D(); //NOT VALID
C c=new A(); //VALID
A a1=new D(); //VALID
2.Calling a variable polymorphically.Permalink If a variable is called from a polymorphic object,we follow the reference i.e. the super class. And if the variable is not present in the super class ,it results in a COMPILE ERROR. EG:
class A{
int x=5;
}
class B extends A{
int x=10;
}
class App{
public static void main(String[]args){
A a=new B();
System.out.println(a.x);
//What do u think is the output class A x value (5)or class B x value(10)?Follow the rule.
}
}
OUTPUT:
5
Calling a method polymorphically.Permalink If a method is called from a polymorphic object ,we follow a 2 step procedure: 1.We got to the super class and check whther the method is present or not.
if(present)
Goto to step 2
else
COMPILE ERROR
2.Come to the sub class and check wther the method is overrided or not.
if(overrided)
Call the sub-class version
else
Call the super -class version.
Eg:
class A{
void m1(){
System.out.println("A");
}}
class B extends A{
void m1(){
System.out.println("B");
}}
class App{
public static void main(String[]args){
A a=new B();
a.m1(); //Follow the rule
B=new B();
b.m1(); //Normal sub class object method call
}}
OUTPUT:
B
B
So that’s all for polymorphism in java.
Happy Learning :)