Java: transformación ascendente y transformación descendente

Transformación ascendente:

  • De subclase a superclase, conversión automática de tipos
  • Cuando la referencia de la clase principal apunta al objeto de la subclase, el objeto de la subclase sufrirá una transformación y se convertirá en el supertipo.

Transición descendente:

  • De la clase principal a la clase secundaria, conversión de tipo coercitiva

  • No todos los objetos pueden lograr una transformación hacia abajo, solo cuando este objeto es originalmente un objeto de subclase obtenido a través de una transformación hacia arriba, la transformación hacia abajo puede ser posible.

Cree tres clases, la relación de herencia se muestra en la figura:

		class Fruit{
    
    }

		class Apple extends Fruit{
    
    }

		class Banana extends Fruit{
    
    }
		Fruit fruit = new Apple();//发生向上转型
		
		Fruit fruit2 = new Banana();
		Banana ba = (Banana) fruit2;//向下转型
		
		//Banana ba_ = (Banana) fruit;

Preste atención a la línea comentada, la variable de fruta en sí es la transformación hacia arriba del objeto Apple, y se rechaza nuevamente, también es del tipo Apple y no se convertirá en el tipo Banana. Se puede compilar, pero se informará de una excepción durante la ejecución.
Exception in thread "main" java.lang.ClassCastException: polymorphic.Apple cannot be cast to polymorphic.Banana

Supongo que te gusta

Origin blog.csdn.net/qq_41504815/article/details/112714774
Recomendado
Clasificación