Revisión de Java_ Transformación ascendente

Conclusión: en la transformación ascendente, la referencia de la clase principal apunta al objeto de la subclase, y este objeto de referencia no puede llamar al método de la subclase al llamar al método, porque el tipo compilado es el elemento a la izquierda del " = sign", y el tipo compilado está en la etapa de compilación. De acuerdo, dado que el método cry() no existe en la clase principal, no se puede heredar en la subclase, por lo que solo se puede definir por sí mismo. Se puede llamar al método eat() porque el lado derecho del signo "=" es el tipo de ejecución, y el tipo de ejecución es para encontrar el método desde la subclase hacia arriba (clase principal), por lo que la referencia del perro puede llamar al método eat( ) y los métodos sleep(). Ir directamente al código.

public class Animal {
    public void eat(){
        System.out.println("吃xx");
    }
    public void sleep(){
        System.out.println("睡觉");
    }
}
public class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println("吃肉");
    }
    public void cry(){//这个时子类特有的方法
        System.out.println("狗叫");
    }
}
public class Test {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.eat();
        dog.sleep();
        //dog.cry(); 这个会报错
    }
}

El resultado de la operación es el siguiente

comer carne
dormir

Supongo que te gusta

Origin blog.csdn.net/ming2060/article/details/127775009
Recomendado
Clasificación