[Java] El principio de la conversión forzada de la clase principal en clase secundaria en Java

El principio de la conversión forzada de una clase padre en una subclase en Java : la referencia del tipo padre se refiere a la instancia de la subclase, que se puede convertir en la referencia de qué subclase.

Ejemplo:

public class Test {

 public static void main(String[] args) {
  Person person = new Boy();
  Boy boy = (Boy) person;
  boy.eat();
 }

}

class Person {
    public void eat() {
     System.out.println("The people were eating");
    }
}

class Boy extends Person {
 public void eat() {
  System.out.println("The boy were eating");
 }
}

Resultado de impresión: El niño estaba comiendo

Motivo: cuando se crea una instancia del Boy, la dirección de referencia se devuelve a la persona. En este momento, la referencia de la persona realmente apunta a Boy, por lo que la conversión de la persona a Boy puede tener éxito.

Definir otra clase:

class Girl extends Person {
 public void eat() {
  System.out.println("The girl were eating");
 }
}

main方法中添加:

  Person p = new Girl();
  Boy b = (Boy)p;
  b.eat();

Mensaje cuando se ejecuta: la chica no se puede convertir en chico (no se puede convertir de chica a chico)

Motivo: cuando se crea una instancia de Girl, la dirección de referencia se devuelve a P. En este momento, la referencia p se refiere a Girl. Convertir p a Boy significa convertir Girl a Boy, lo que ciertamente no puede tener éxito.

En otras palabras, el ejemplo anterior es que tanto los niños como las niñas son humanos. Esto es cierto, pero debe decir que las niñas son niños.

La premisa de la clase de rotor principal es: este objeto de clase principal es una referencia al objeto de clase secundaria

Por ejemplo:

  Father father = (Father)son;
当这种情况时,可以用instanceof判断是否是子类类型(实际) 然后强转回去
  if(father instanceof Son)
     Son son =(Son)father;

Aparte de eso, no.

Supongo que te gusta

Origin www.cnblogs.com/iiiiiher/p/12687642.html
Recomendado
Clasificación