El mismo comportamiento, a través de diferentes cosas, puede manifestar diferentes formas. El polimorfismo describe tal estado.
Definición: se refiere al mismo comportamiento, con múltiples manifestaciones diferentes.
Premisa polimórfica
1. Herencia o realización [elija uno de dos]
2. Reescritura de métodos [realización de significado: sin reescritura, sin sentido]
3. La referencia de la clase principal apunta al objeto de la clase secundaria [realización de formato]
Polimorfismo
Formato
Nombre de variable de tipo primario = nuevo objeto de subclase;
Nombre de la variable Nombre del método ();
Fu z = new Zi (); // La clase padre hace referencia al objeto de clase hijo
z.method (); // Llamar al método de la subclase
Nota: Al usar un método polimórfico para llamar a un método, primero verifique si el método existe en la clase principal, si no, luego un error de compilación; si es así, ejecute el método después de que la subclase haya sido reescrita
Beneficios del polimorfismo.
El tipo de clase padre se usa como parámetro formal del método, y el objeto de subclase se pasa al método, y se llama al método, que puede reflejar la extensibilidad y conveniencia del polimorfismo.
Conversión de tipo de referencia
Transformación hacia arriba
El polimorfismo en sí mismo es el proceso de conversión ascendente del tipo de subclase al tipo de superclase, que es el valor predeterminado.
Desventajas
No se pueden usar variables miembro y métodos miembros específicos para subclases
Nombre de variable de clase principal = nuevo tipo de subclase ();
Tales como: Animal a = nuevo gato ();
Transformación hacia abajo: la premisa debe ser polimórfica
El proceso de conversión descendente del tipo primario al tipo secundario es obligatorio.
Nombre de variable de tipo de subclase = (tipo de subclase) nombre de variable de clase principal;
如: Cat c = (Cat) a;
Por qué transformar
Para llamar a métodos específicos de subclases, debe hacer una transformación descendente.
Transformación anormal
El objeto gato se convertirá en un objeto perro aparecerá: ClassCastException
Evite excepciones de conversión de tipo y haga juicios antes de la conversión
Nombre de variable instancia de tipo de datos
Si la variable pertenece al tipo de datos, devuelve verdadero.
Si la variable no pertenece al tipo de datos, devuelve falso.
Resumen
Para las variables miembro, los métodos estáticos se ven a la izquierda; los métodos no estáticos: se compilan a la izquierda y se ejecutan a la derecha.
当父类变量引用子类对象时,在这个引用变量指向的对象中,他的成员变量和静态方法与父类是一致的;他的非静态方法,在编译时是与父类一致的,运行时却与子类一致(发生了重写)。