Java Polymorphism


 Polymorphism

Having more than one form. Method overriding and overloading can be used to perform polymorphism.

Method overloading

         Method overloading means methods have the same name but different parameter list and different data types

Example 01:

package com.java.Polymorphism;

class methodoverload

{

void demo()

{

System.out.println("Printing no parameter");

}


void demo(int i)

{

System.out.println("Printing one parameter");

}

void demo(int i,int j)

{

System.out.println("Printing two parameters");

}

}


public class Method_overLoad {


}


Example 02:

package com.java.Polymorphism;


//Method Overloading in Java


class MathOperation {

public static int multiply(int a, int b) {

return a * b;

}


public static double multiply(double x, double y) {

return x * y;

}

public static double multiply(double i, int j) {

return i * j;

}

public static int multiply(int r) {

return r*r;

}

}


public class methodOverloading {


public static void main(String arg[]) {

System.out.println("Multiply 2 Integer Value : " + MathOperation.multiply(25, 10));

System.out.println("Multiply 2 Double Value : " + MathOperation.multiply(2.5, 8.5));

System.out.println("Multiply Double & Integer Value : " + MathOperation.multiply(2.5, 8));

System.out.println("Multiply Integer Value : " + MathOperation.multiply(2));

}

}



constructor overloading

        Like methods, constructors can also be overloaded.

         Constructor overloading is a concept of having more than one constructor with different parameters list, in such a way that each constructor performs a different task. 

Example 03:

package Constructor;


// Constructor Overloading


class Box

{

float length,breadth;

public Box(){ //Default

length=2;

breadth=5;

}


public Box(float x,float y) //Parameterized

{

length=x;

breadth=y;

}

Box(float x)

{

length=breadth=x;

}

float area()

{

return length*breadth;

}

}



public class constructor_overloading {


public static void main(String args[]) {

Box o =new Box();

System.out.println("Area : "+o.area() );

Box o1 =new Box(3,6);

System.out.println("Area : "+o1.area() );

Box o2 =new Box(3);

System.out.println("Area : "+o2.area() );

}

}


Method Overriding:

         Declaring a method in a subclass that is already present in the parent class is known as method overriding. 

 Example 04:

package com.java.Polymorphism;


//Method Overriding in Java


class user { //Base

String name;

int age;


user(String n, int a) {

this.name = n;

this.age = a;

}

public void display(){

System.out.println("Name : "+name);

System.out.println("Age : "+age);

}

}


class MainProgrammer extends user{ //Derived Class

String CompanyName;


MainProgrammer(String n, int a,String c){

super(n,a);

this.CompanyName=c;

}

public void display(){

System.out.println("Name : "+name);

System.out.println("Age : "+age);

System.out.println("Company Name : "+CompanyName);

}

}



public class methodOverriding {


public static void main(String args[]) {

MainProgrammer o =new MainProgrammer("Raja",22,"Tutor Joes");

o.display();

}

}


/*

Overriding in Inheritance is used when you use an already-defined method

from a superclass in a subclass,

but in a different way than how the method was originally designed in the

superclass.

Overriding allows the user to reuse code by using existing material and modifying it to suit the user’s needs better.

*/


Dynamic polymorphism/Dynamic Dispatch:

An object can take many forms at run time.

 Upcasting: Process of casting a reference from the child to the parent class.

DowncastingProcess of casting a reference from a parent type to the child class.


Example 05:

package com.java.Polymorphism;



class bank{

float getRateOfInterest(){return 0;}

}

class SBI extends bank{

float getRateOfInterest(){return 8.4f;}

}

class ICICI extends bank{

float getRateOfInterest(){return 7.3f;}

}

class AXIS extends bank{

float getRateOfInterest(){return 9.7f;}

}




class DynamicDispatchExample {

public static void main(String args[]){

bank b;

b=new SBI(); //upcasting

System.out.println("SBI Rate of Interest: "+b.getRateOfInterest());


b=new ICICI();

System.out.println("ICICI Rate of Interest: "+b.getRateOfInterest());


ICICI bk = (ICICI) b; //Downcasting

System.out.println("ICICI Rate of Interest: "+bk.getRateOfInterest());


b=new AXIS();

System.out.println("AXIS Rate of Interest: "+b.getRateOfInterest());

}

}


//can be also made user-friendly.








Post a Comment

0 Comments