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.
Downcasting: Process 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.
0 Comments