[Columna 63 de JavaSE] Polimorfismo, la clase principal se refiere al objeto de la subclase, un concepto importante en la programación orientada a objetos

Página de inicio del autor : Diseñador Xiao Zheng
Breve introducción del autor : 3 años de experiencia en desarrollo JAVA full-stack, centrándose en la tecnología JAVA, personalización del sistema, orientación remota, dedicado a la transformación digital empresarial, profesor certificado de CSDN College y Blue Bridge Cloud Course.
Dirección principal : Vue, SpringBoot, subprograma WeChat

Este artículo explica el concepto y la sintaxis del polimorfismo orientado a objetos en Java y proporciona códigos de muestra. El polimorfismo es un concepto importante en la programación orientada a objetos, que permite que la variable de referencia de la clase principal se refiera al objeto de la subclase y realiza el procesamiento unificado de objetos de diferentes subclases.

inserte la descripción de la imagen aquí


1. ¿Qué es el polimorfismo?

El polimorfismo es un concepto importante en la programación orientada a objetos, que permite que la variable de referencia de la clase principal se refiera al objeto de la subclase y realiza el procesamiento unificado de objetos de diferentes subclases .

En Java, el polimorfismo se puede lograr a través de la herencia y la anulación de métodos. Cuando una variable de referencia de clase principal apunta a un objeto de subclase, el método anulado en la subclase se puede llamar a través de la variable de referencia de clase principal.

La ventaja del polimorfismo es que puede realizar la llamada y el procesamiento de diferentes objetos de subclase a través de una interfaz de clase principal unificada, lo que puede mejorar la flexibilidad, la escalabilidad y la capacidad de mantenimiento del código .

Por ejemplo, supongamos que hay una clase de animal Animal y sus dos subclases Perro y Gato.

Hay un método en la clase Animal eat(), y este método se reescribe en las clases Dog y Cat respectivamente.

A través del polimorfismo, puede usar una variable de referencia de tipo Animal para referirse a un objeto Perro o Gato, y luego llamar a un método a través de esta variable de referencia eat(), y el programa seleccionará automáticamente el método correspondiente para llamar de acuerdo con el tipo de referencia real. objeto.

class Animal {
    
    
    public void eat() {
    
    
        System.out.println("Animal is eating.");
    }
}

class Dog extends Animal {
    
    
    @Override
    public void eat() {
    
    
        System.out.println("Dog is eating.");
    }
}

class Cat extends Animal {
    
    
    @Override
    public void eat() {
    
    
        System.out.println("Cat is eating.");
    }
}

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();
        
        animal1.eat();  // 输出: Dog is eating.
        animal2.eat();  // 输出: Cat is eating.
    }
}

En el ejemplo anterior, animal1y animal2son variables de referencia de tipo Animal, pero apuntan a objetos Perro y Gato respectivamente. Aunque su tipo es Animal, el método correspondiente se llamará de acuerdo con el tipo de objeto al que realmente se hace referencia en tiempo de ejecución, realizando polimorfismo.

inserte la descripción de la imagen aquí


2. Por qué polimorfismo

La existencia de polimorfismo en Java tiene la siguiente 5 55 beneficios, estudie cuidadosamente.

  1. Flexibilidad : el polimorfismo hace que el código sea más flexible y extensible. Al utilizar las variables de referencia de la clase principal para hacer referencia a objetos de diferentes subclases, se pueden procesar diferentes objetos de manera uniforme, mejorando así la flexibilidad del código.
  2. Reemplazabilidad : el polimorfismo hace que el código sea más reemplazable. Dado que la variable de referencia de la clase principal puede hacer referencia al objeto de la subclase, se puede reemplazar con un objeto de subclase diferente sin cambiar el código, lo que permite la capacidad de reemplazo del código.
  3. Interfaz uniforme : el polimorfismo hace que el código tenga una interfaz unificada. Las interfaces y los métodos definidos por la clase principal se pueden compartir en varias subclases, y estos métodos se llaman a través de las variables de referencia de la clase principal, lo que permite realizar la interfaz unificada del código y hacer que el diseño del programa sea más estandarizado y unificado.
  4. Reutilización de código : el polimorfismo realiza la reutilización de código a través del mecanismo de herencia. Las subclases pueden heredar las propiedades y métodos de la clase principal, evitando así la escritura repetida del mismo código y mejorando la reutilización del código.
  5. Extensibilidad : el polimorfismo hace que el código sea más extensible. Al heredar y reescribir los métodos de la clase principal, la subclase puede expandir las funciones sobre la base de la clase principal y agregar nuevos atributos y métodos, logrando así la extensibilidad del código.

Al aplicar correctamente el polimorfismo, podemos diseñar código con una estructura, extensibilidad y mantenibilidad claras, y mejorar la eficiencia del desarrollo y la calidad del código. El polimorfismo es una característica importante en la programación orientada a objetos, que puede mejorar la flexibilidad y la escalabilidad del código y hacer que el diseño del programa esté más en línea con el principio orientado a objetos.

inserte la descripción de la imagen aquí


3. Cómo realizar polimorfismo

En Java, la base para realizar el polimorfismo es la herencia y la reescritura de métodos. El siguiente es un código de muestra simple para ilustrar la realización del polimorfismo. Estudie detenidamente.

// 父类 Animal
class Animal {
    
    
    public void eat() {
    
    
        System.out.println("Animal is eating.");
    }
}

// 子类 Dog
class Dog extends Animal {
    
    
    @Override
    public void eat() {
    
    
        System.out.println("Dog is eating.");
    }
}

// 子类 Cat
class Cat extends Animal {
    
    
    @Override
    public void eat() {
    
    
        System.out.println("Cat is eating.");
    }
}

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Animal animal1 = new Dog(); // 父类引用指向子类对象
        Animal animal2 = new Cat(); // 父类引用指向另一个子类对象

        animal1.eat(); // 调用重写后的方法,输出:Dog is eating.
        animal2.eat(); // 调用重写后的方法,输出:Cat is eating.
    }
}

En el ejemplo anterior, Animal es la clase principal y Perro y Gato son las subclases. Hay un método en la clase principal Animal eat(), y las subclases Dog y Cat anulan este método respectivamente.

En el método de la clase Principal , referirnos a los objetos Perro y Gato a través de las variables de referencia y main()de tipo Animal .animal1animal2

animal1y animal2son variables de referencia de tipo Animal, pero en realidad apuntan a objetos Perro y Gato.

Al llamar a animal1.eat()y animal2.eat(), dado que estas dos variables de referencia apuntan a diferentes objetos de subclase, se llamará al método anulado correspondiente de acuerdo con el tipo del objeto al que realmente se hace referencia.

Esta es la encarnación del polimorfismo. La misma llamada de método puede ejecutar diferentes implementaciones de acuerdo con diferentes tipos de objetos , lo que da cuenta de la flexibilidad y escalabilidad del código.

inserte la descripción de la imagen aquí


4. La relación entre polimorfismo y encapsulación y herencia

En Java, el polimorfismo, la encapsulación y la herencia son tres características importantes de la programación orientada a objetos, y existe una estrecha relación y apoyo mutuo entre ellas.

  1. Herencia y polimorfismo
  • La herencia es derivar una nueva clase de una clase existente mediante la creación de una nueva clase, y la nueva clase hereda las propiedades y métodos de la clase existente. Las subclases pueden anular los métodos de la clase principal para implementar su propia lógica específica, que es la encarnación del polimorfismo.

  • El polimorfismo significa que la misma llamada de método puede ejecutar diferentes implementaciones de acuerdo con diferentes tipos de objetos. A través de la herencia y la reescritura de métodos, se puede hacer referencia a diferentes objetos de subclase en la variable de referencia de la clase principal para realizar un procesamiento unificado de diferentes objetos.

  1. Encapsulación y herencia
  • La encapsulación es para encapsular datos y métodos en una clase, ocultar los detalles de implementación del exterior y solo proporcionar interfaces públicas para que otras clases accedan.

  • La herencia puede heredar las propiedades y los métodos de la clase principal, y la subclase puede usar directamente la interfaz pública de la clase principal sin conocer los detalles de implementación específicos, dándose cuenta de las características de la encapsulación.

  1. Polimorfismo y encapsulación
  • El polimorfismo permite que diferentes objetos de subclase llamen al mismo método a través de variables de referencia de clase principal a través de las interfaces y métodos definidos por la clase principal.

  • La encapsulación encapsula datos y métodos en una clase, oculta los detalles de implementación del exterior y accede a las funciones de la clase al proporcionar una interfaz pública. El polimorfismo hace innecesario que los llamantes externos se preocupen por la implementación específica y solo necesitan usar la interfaz pública para llamar al método.

Por lo tanto, el polimorfismo, la encapsulación y la herencia son tres características importantes en la programación orientada a objetos, están interrelacionados y se apoyan mutuamente, y juntos forman la base de la programación orientada a objetos. El polimorfismo se logra a través de la herencia y la reescritura de métodos. La encapsulación protege los datos y los métodos al ocultar los detalles de implementación. La herencia reutiliza el código y amplía las funciones al heredar las propiedades y los métodos de la clase principal a través de subclases.

inserte la descripción de la imagen aquí


Cinco preguntas de entrevista polimórficas

1. ¿Qué es el polimorfismo?

El polimorfismo es un concepto importante en la programación orientada a objetos, lo que significa que la misma llamada de método puede realizar diferentes implementaciones de acuerdo con diferentes tipos de objetos. Específicamente, a través de la herencia y la reescritura de métodos, las subclases pueden reescribir métodos de clases principales y hacer referencia a objetos de diferentes subclases a través de variables de referencia de clases principales para lograr un procesamiento unificado de diferentes objetos.

2. ¿Cuáles son los métodos de implementación del polimorfismo?

En Java, el polimorfismo se puede lograr de las siguientes maneras.

  • Herencia : las subclases heredan las propiedades y los métodos de la clase principal y pueden anular los métodos de la clase principal para lograr diferentes comportamientos.
  • Reescritura de métodos : las subclases pueden reescribir el método de la clase principal, es decir, redefinir la lógica de implementación del método en la subclase.
  • Implementación de interfaz : una clase implementa una o más interfaces, y el método de la clase implementadora se llama a través de la variable de referencia de interfaz.

3. ¿Cuáles son los beneficios del estado?

El polimorfismo tiene varios beneficios.

  • Flexibilidad : a través del polimorfismo, el código es más flexible y extensible, y se pueden reemplazar o agregar nuevos objetos de acuerdo con las necesidades reales sin cambiar el código existente.
  • Sustituibilidad : a través del polimorfismo, la misma variable de referencia de clase principal puede referirse a objetos de diferentes subclases, lo que permite la reemplazabilidad del código.
  • Interfaz unificada : a través del polimorfismo, puede definir una interfaz y un método unificados, realizar la operación unificada de diferentes objetos y mejorar la estandarización y la capacidad de mantenimiento del código.
  • Reutilización de código : Mediante herencia y polimorfismo, se pueden reutilizar las propiedades y métodos de la clase padre, evitando la escritura repetida del mismo código.
  • Escalabilidad : a través del polimorfismo, se pueden agregar nuevas propiedades y métodos a las subclases, lo que da cuenta de la escalabilidad del código.

Cuarto, dé un ejemplo de polimorfismo.

Un ejemplo común de polimorfismo es la clase Animal y sus subclases, como Cat y Dog. Puede definir una clase Animal como una clase principal con un eat()método. Luego defina la clase gato y la clase perro como subclases y reescriba eat()los métodos respectivamente. Haga referencia a las variables de la clase principal para hacer referencia a los objetos de las clases de gatos y perros, y llame eat()al método para lograr diferentes comportamientos de diferentes objetos animales.


6. Resumen

Este artículo explica el concepto y la sintaxis del polimorfismo orientado a objetos en Java y proporciona códigos de muestra. En el próximo blog, explicaré los puntos de conocimiento de las interfaces y las clases abstractas de Java.

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41464123/article/details/132048421
Recomendado
Clasificación