Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Polimorfismo de Java

Polimorfismo de Java

En este tutorial, aprenderemos sobre el polimorfismo de Java y su implementación con la ayuda de ejemplos.

El polimorfismo es un concepto importante de la programación orientada a objetos. Simplemente significa más de una forma.

Es decir, una misma entidad (método u operador u objeto) puede realizar diferentes operaciones en diferentes escenarios.


Ejemplo:polimorfismo de Java

class Polygon {

  // method to render a shape
  public void render() {
    System.out.println("Rendering Polygon...");
  }
}

class Square extends Polygon {

  // renders Square
  public void render() {
    System.out.println("Rendering Square...");
  }
}

class Circle extends Polygon {

  // renders circle
  public void render() {
    System.out.println("Rendering Circle...");
  }
}

class Main {
  public static void main(String[] args) {
    
    // create an object of Square
    Square s1 = new Square();
    s1.render();

    // create an object of Circle
    Circle c1 = new Circle();
    c1.render();
  }
}

Salida

Rendering Square...
Rendering Circle...

En el ejemplo anterior, hemos creado una superclase:Polygon y dos subclases:Cuadrado y Círculo . Note el uso del render() método.

El propósito principal del render() El método es renderizar la forma. Sin embargo, el proceso de renderizar un cuadrado es diferente al proceso de renderizar un círculo.

Por lo tanto, el render() El método se comporta de manera diferente en diferentes clases. O podemos decir render() es polimórfico.


¿Por qué polimorfismo?

El polimorfismo nos permite crear código consistente. En el ejemplo anterior, también podemos crear diferentes métodos:renderSquare() y renderCircle() para renderizar Cuadrado y Círculo , respectivamente.

Esto funcionará perfectamente. Sin embargo, para cada forma, necesitamos crear diferentes métodos. Hará que nuestro código sea inconsistente.

Para solucionar esto, el polimorfismo en Java nos permite crear un único método render() que se comportará de manera diferente para diferentes formas.

Nota :El print() El método es también un ejemplo de polimorfismo. Se usa para imprimir valores de diferentes tipos como char , int , string , etc.


Podemos lograr polimorfismo en Java usando las siguientes formas:

  1. Anulación de métodos
  2. Sobrecarga de métodos
  3. Sobrecarga del operador

Anulación del método Java

Durante la herencia en Java, si el mismo método está presente tanto en la superclase como en la subclase. Luego, el método en la subclase anula el mismo método en la superclase. Esto se denomina anulación de métodos.

En este caso, el mismo método realizará una operación en la superclase y otra operación en la subclase. Por ejemplo,

Ejemplo 1:polimorfismo utilizando la anulación de métodos

class Language {
  public void displayInfo() {
    System.out.println("Common English Language");
  }
}

class Java extends Language {
  @Override
  public void displayInfo() {
    System.out.println("Java Programming Language");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Java class
    Java j1 = new Java();
    j1.displayInfo();

    // create an object of Language class
    Language l1 = new Language();
    l1.displayInfo();
  }
}

Salida :

Java Programming Language
Common English Language

En el ejemplo anterior, hemos creado una superclase llamada Idioma y una subclase llamada Java . Aquí, el método displayInfo() está presente en ambos Idioma y Java .

El uso de displayInfo() es imprimir la información. Sin embargo, está imprimiendo información diferente en Idioma y Java .

Según el objeto utilizado para llamar al método, se imprime la información correspondiente.

Nota :El método que se llama se determina durante la ejecución del programa. Por lo tanto, la anulación de métodos es un polimorfismo en tiempo de ejecución .


2. Sobrecarga del método Java

En una clase de Java, podemos crear métodos con el mismo nombre si difieren en los parámetros. Por ejemplo,

void func() { ... }
void func(int a) { ... }
float func(double a) { ... }
float func(int a, float b) { ... }

Esto se conoce como sobrecarga de métodos en Java. Aquí, el mismo método realizará diferentes operaciones según el parámetro.

Ejemplo 3:Polimorfismo usando sobrecarga de métodos

class Pattern {

  // method without parameter
  public void display() {
    for (int i = 0; i < 10; i++) {
      System.out.print("*");
    }
  }

  // method with single parameter
  public void display(char symbol) {
    for (int i = 0; i < 10; i++) {
      System.out.print(symbol);
    }
  }
}

class Main {
  public static void main(String[] args) {
    Pattern d1 = new Pattern();

    // call method without any argument
    d1.display();
    System.out.println("\n");

    // call method with a single argument
    d1.display('#');
  }
}

Salida :

**********

##########

En el ejemplo anterior, hemos creado una clase llamada Patrón . La clase contiene un método llamado display() que está sobrecargado.

// method with no arguments
display() {...}

// method with a single char type argument
display(char symbol) {...}

Aquí, la función principal de display() es imprimir el patrón. Sin embargo, según los argumentos pasados, el método realiza diferentes operaciones:

Nota :El compilador determina el método que se llama. Por lo tanto, también se conoce como polimorfismo en tiempo de compilación.


3. Sobrecarga del operador Java

Algunos operadores en Java se comportan de manera diferente con diferentes operandos. Por ejemplo,

Veamos cómo podemos lograr el polimorfismo utilizando la sobrecarga de operadores.

El + El operador se utiliza para agregar dos entidades. Sin embargo, en Java, el + el operador realiza dos operaciones.

1. Cuando + se usa con números (enteros y números de coma flotante), realiza sumas matemáticas. Por ejemplo,

int a = 5;
int b = 6;

// + with numbers
int sum = a + b;  // Output = 11

2. Cuando usamos el + operador con cadenas, realizará la concatenación de cadenas (unir dos cadenas). Por ejemplo,

String first = "Java ";
String second = "Programming";

// + with strings
name = first + second;  // Output = Java Programming

Aquí, podemos ver que el + El operador está sobrecargado en Java para realizar dos operaciones:adición y concatenación .

Nota :En lenguajes como C++, podemos definir operadores para que funcionen de manera diferente para diferentes operandos. Sin embargo, Java no admite la sobrecarga de operadores definidos por el usuario.


Variables polimórficas

Una variable se llama polimórfica si se refiere a diferentes valores bajo diferentes condiciones.

Las variables de objeto (variables de instancia) representan el comportamiento de las variables polimórficas en Java. Es porque las variables de objeto de una clase pueden referirse a objetos de su clase así como a objetos de sus subclases.

Ejemplo:Variables polimórficas

class ProgrammingLanguage {
  public void display() {
    System.out.println("I am Programming Language.");
  }
}

class Java extends ProgrammingLanguage {
  @Override
  public void display() {
    System.out.println("I am Object-Oriented Programming Language.");
  }
}

class Main {
  public static void main(String[] args) {

    // declare an object variable
    ProgrammingLanguage pl;

    // create object of ProgrammingLanguage
    pl = new ProgrammingLanguage();
    pl.display();

    // create object of Java class
    pl = new Java();
    pl.display();
  }
}

Salida :

I am Programming Language.
I am Object-Oriented Programming Language.

En el ejemplo anterior, hemos creado una variable de objeto pl del Lenguaje de Programación clase. Aquí, pl es una variable polimórfica. Esto se debe a que,

Este es un ejemplo de upcasting en Java.


Java

  1. Operadores Java
  2. Interfaz Java
  3. Prueba de Java con recursos
  4. Anotaciones Java
  5. Tipos de anotación de Java
  6. Método String Length () en Java:cómo encontrar con el ejemplo
  7. Método Java String indexOf() con subcadena y ejemplos
  8. Método Java String charAt() con ejemplo
  9. Java String termina con () método con ejemplo
  10. Método Java String replace(), replaceAll() y replaceFirst()
  11. Java - Anulación