Polimorfismo en Java con el Ejemplo

Aprender: polimorfismo en Java , este artículo va a explicar acerca de polimorfismo. En Java y el concepto de método dinámico de Despacho (DMD).

Requisito : el reemplazo de métodos en Java

Como sabemos,
En Java tenemos el concepto de herencia, las características de class los padres pueden heredarse / extendido a la Class Niño, utilizando este concepto podemos entender , ¿cuál es el reemplazo de métodos en Java? Ya hemos visto el ejemplo de reemplazo de métodos en este artículo: Herencia en Java con el ejemplo. Hemos discutido que los métodos con los miembros de datos Class no puede ser cambiada, llegamos al mismo ejemplo de nuevo y discutir el uso de palabras clave private.

Considere el programa:

import java.util.Scanner;
class Headquarters
{
int totalemployees; // Data Member 1
String cityname; // Data Member 2
Scanner KB=new Scanner(System.in);
void getDetails()
{
System.out.println("Enter City Where Headquarters is Sitiuated :");
cityname=KB.nextLine();
System.out.println("Enter Total Number of Employees in Headquarters");
totalemployees=KB.nextInt();
}
void showDetails()
{
System.out.println("Company Headquarters is Sitiuated in "+cityname+" and has "+totalemployees+" Employees");
}
}
class Mainbranch extends Headquarters
{
int totalMBemployees;
String citynameMB;
void getDetails()
{
System.out.println("Headquarters:");
super.getDetails();
System.out.println("Main Branch:");
System.out.println("Enter City Where Main Branch is Sitiuated");
KB.nextLine();//to understand why we used this statement visit my first article at this LINK
citynameMB=KB.nextLine();
System.out.println("Enter The Total Number of Employees In Main Branch");
totalMBemployees=KB.nextInt();
}
void showDetails()
{
System.out.println("Headquarters:");
super.showDetails();
System.out.println("Main Branch:");
System.out.println("Company Main Branch is Sitiuated in "+citynameMB+" and has "+totalMBemployees+" Employees");
}
}
class Company
{
public static void main(String args[])
{
Mainbranch M=new Mainbranch();//only the inherited class was instantiated and we now invoke the getDetails() and showDetails() method of the Headquarters class with the help of Super Keyword
M.getDetails(); //When this method is called, first it will invoke the getDetails() method of Headquarters and then will progress to the Mainbranch class.
M.showDetails();//Similary , first this method will show the details of Headquarters Class and then it will progress to the Mainbranch class.
}
}

salida

Headquarters:
Enter City Where Headquarters is Sitiuated :
Delhi
Enter Total Number of Employees in Headquarters
1500
Main Branch:
Enter City Where Main Branch is Sitiuated
Indore
Enter The Total Number of Employees In Main Branch
500
Headquarters:
Company Headquarters is Sitiuated in Delhi and has 1500 Employees
Main Branch:
Company Main Branch is Sitiuated in Indore and has 500 Employees

NOTA: que en el anterior programa que estamos utilizando dos variables de referencia Super a llamar al mismo nombre de método: for y M pero este tipo de programa no se puede considerar estar siguiendo polimorfismo.

El polimorfismo se denomina generalmente como el acceso a los métodos Super niño con la base Class de referencia, vamos a discutir este tipo de polimorfismo en el próximo artículo, este tipo de polimorfismo se conoce como tiempo de ejecución polimorfismo y se consigue con ayuda de programación mecanismo conocido como método dinámico de Despacho (DMD) .

Antes de entrar en el método dinámico de Despacho lea el uso de palabras clave Class en Programación Java a través de este enlace: Clases abstract en Java con el ejemplo.

Considerar el Programa Abstract DMD

import java.util.Scanner;
abstract class Shape
{
Scanner KB=new Scanner(System.in);
abstract void getDimensions();
abstract void showArea();
}
class Reactangle extends Shape
{
private double length, breadth,area;
void getDimensions()
{
System.out.println("Enter Length of Rectangle");
length=KB.nextDouble();
System.out.println("Enter Breadth of Rectangle");
breadth=KB.nextDouble();
}
void showArea()
{
System.out.println("Length of Reactangle:"+length);
System.out.println("Breadth of Reactangle:"+breadth);
System.out.println("Area of the Rectangle is:"+length*breadth);
}
}
class Circle extends Shape
{
private double radius,area;
void getDimensions()
{
System.out.println("Enter Radius of Circle");
radius=KB.nextDouble();
}
void showArea()
{
System.out.println("Radius of the Circle is:"+radius);
System.out.println("Area of Circle :"+3.14*radius*radius);
}
}
class Triangle extends Shape
{
private double baselength, height,area;
void getDimensions()
{
System.out.println("Enter Base Length of Triangle");
baselength=KB.nextDouble();
System.out.println("Enter height of Triangle");
height=KB.nextDouble();
}
void showArea()
{
System.out.println("Base Length of Triangle:"+baselength);
System.out.println("Height of Triangle:"+height);
System.out.println("Area of the Rectangle is:"+0.5*baselength*height);
}
}
class DMDShape
{
public static void main(String args[])
{
Shape S;//will not be instantiated
Reactangle R=new Reactangle();
S=R;
S.getDimensions();
S.showArea();
Circle C=new Circle();
S=C;
S.getDimensions();
S.showArea();
Triangle T=new Triangle();
S=T;
S.getDimensions();
S.showArea();
}
}

salida

Enter Length of Rectangle
10
Enter Breadth of Rectangle
5
Length of Reactangle:10.0
Breadth of Reactangle:5.0
Area of the Rectangle is:50.0
Enter Radius of Circle
5
Radius of the Circle is:5.0
Area of Circle :78.5
Enter Base Length of Triangle
4
Enter height of Triangle
1
Base Length of Triangle:4.0
Height of Triangle:1.0
Area of the Rectangle is:2.0

En el programa anterior, hemos visto que los métodos que se definieron en la Forma for eran de tipo class y la Forma abstract fue heredado en el rectángulo, círculo y triángulo Class, es importante tener en cuenta que los métodos class deben ser redefinido en las clases derivadas y métodos abstract no deben contener estructuras del cuerpo en el abstract base, por tanto, en el que método class no una instancia del objeto Forma main ya que es el punto que tiene que ser recordado durante el uso de clases Class, con la ayuda del programa anterior hemos practicado el concepto de Ejecución polimorfismo.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *