Transformación ascendente en polimorfismo (tres formas)

Sugerencia: Una vez escrito el artículo, la tabla de contenido se puede generar automáticamente. Para saber cómo generarlo, consulte el documento de ayuda a la derecha.


1. ¿Qué está cambiando?

En la programación orientada a objetos, para algunos escenarios complejos (muchas clases, relaciones de herencia muy complicadas), los programadores dibujarán un diagrama UML para representar la relación entre clases. En este momento, la clase padre generalmente se dibuja en la clase secundaria Arriba. lo llamamos "transición ascendente", que significa recurrir a la clase principal.

 people p=new student();

Personas es la clase principal del estudiante, aquí se transforma la instancia del estudiante, p es una referencia a las personas de la clase principal, apuntando a una instancia de la subclase estudiante.

2. Tres formas de transformación ascendente

-Asignación directa

La asignación directa es la misma que el código anterior.

-Parámetros de transferencia de método

public class Main {
    
    
    public static void main(String[] args) {
    
    
        student s1=new student();
        people p=new student();
        func(s1);
    }
    public static void func(people p){
    
    
        p.look();
    }
}

En este momento, el tipo de parámetro formal people es la clase principal, pero en realidad se pasa la instancia de la subclase.

-Método de retorno

public class Main {
    
    
    public static void main(String[] args) {
    
    
        people p=lookWhat();
    }

    private static people lookWhat() {
    
    
        student s1=new student();
        return s1;
    }
}

Lo que se devuelve es una referencia de tipo people, pero en realidad corresponde a una instancia de student.

Supongo que te gusta

Origin blog.csdn.net/weixin_45070922/article/details/112970842
Recomendado
Clasificación