polimorfismo de Java en detalle

Lo que es polimórfica

Multi-estado, es decir, el estado de una variedad de comportamientos. Se refiere a la variable de tipo clase padre a punto para el tipo de objeto para crear una subclase de utilizar el método de la variable en una clase padre se reemplaza por las subclases llamada, el método de la exposición clase padre diferentes características de comportamiento, este fenómeno es la multi-estado . La manifestación es: el tipo de clase de padres variable = subclase de objetos creados
muestra en el código:

public class Mammal {//父类

	public void move() {
		System.out.println("正在移动...");
	}
}
public class Bat extends Mammal{//子类
	String weight = "1.2kg"@Override
	public void move() {
		System.out.println("靠翼飞行...");
	}
}

public class Test {//main方法中多态的表现

	public static void main(String[] args) {
		Bat bat = new Bat();
		bat.move();
		Mammal mammal = new Bat();//多态的表现形式
		mammal.move();
	}

características polimórficas

1, tiempo de compilación y el tipo de tiempo de ejecución de inconsistencia, de lo contrario no generará polimorfismo. elemento de prueba en el segmento medio de análisis de código describe:

		Bat bat = new Bat();
		bat.move();

En tiempo de compilación, como un tipo de variable subclase, por lo que las llamadas a tiempo de compilación movimiento subclase; en tiempo de ejecución, cuando se ejecuta apuntando bate para el objeto de esta clase se crea, así que llame a este tipo de métodos de movimiento;

		Mammal mammal = new Bat();
		mammal.move();

En tiempo de compilación, el tipo de clase de padres, por lo que el movimiento de tiempo de compilación para llamar a la clase madre; en tiempo de ejecución, punto de mamífero para crear una subclase de objeto, así que llame al método de clase niño se está ejecutando. Compilación y el método de ejecución de llamadas es inconsistente, este fenómeno se conoce como polimorfismo.
2, invocación de método en tiempo de compilación debe anulado por subclases.

public class Mammal {//父类

	public void move() {
		System.out.println("正在移动...");
	}
}
public class Bat extends Mammal{//子类

	@Override
	public void move() {
		System.out.println("靠翼飞行...");
	}
}

3, multi-estado, la variable de matriz tipo de clase = subclases objetos (también referido como el [↑] objeto de transición)
código materializa Código de ensayo de clase, la Mamífero Mamífero nuevo nuevo Bat = (); es decir, formas específicas.

		Mammal mammal = new Bat();
		mammal.move();

Características de la transformación de los objetos

1, la transformación de las propiedades y métodos objeto no puede llamar a la nueva subclase. (Código de ejemplo, puede Mamíferos Bat de llamadas a moverse, pero la salida no saldrá de peso Bat.) Si las nuevas propiedades de transformación y métodos de la subclase llamada debe, tiene que ser convertido para el siguiente objeto de transformación. Haciendo referencia se apreciará que el código en la Prueba anotado.

public class Mammal {//父类

	public void move() {
		System.out.println("正在移动...");
	}
}
public class Bat extends Mammal{//子类
	String weight = "1.2kg"public void eat(){
		System.out.println("正在吃虫子");
	}
	@Override
	public void move() {
		System.out.println("靠翼飞行...");
	}
}

public class Test {//main方法中多态的表现

	public static void main(String[] args) {
		Bat bat = new Bat();
		bat.move();
		Mammal mammal = new Bat();//多态的表现形式
		mammal.move();
		Bat b = (Bat) mammal;//将上转型转化为下转型
		System.out.println(b.weight);
		b.eat();

2, la transformación de la no diana no puede ser transformado en un objeto bajo transformación.
3, si las variables miembro sub-clase repiten con la variable miembro de la clase de los padres, la transformación de un objeto se llama el método de la clase padre.

public class Mammal {//父类
	int weight = 1.2;
		
	public void move() {
		System.out.println("正在移动...");
	}
}
public class Bat extends Mammal{//子类
	String weight = "1.2kg"public void eat(){
		System.out.println("正在吃虫子");
	}
	@Override
	public void move() {
		System.out.println("靠翼飞行...");
	}
}

public class Test {//main方法中多态的表现

	public static void main(String[] args) {
		Bat bat = new Bat();
		bat.move();
		Mammal mammal = new Bat();//多态的表现形式
		Bat b = (Bat) mammal;//将上转型转化为下转型
		System.out.println(b.weight);

En este momento, el peso debe dar como resultado la producción de la clase padre de Mamíferos "1.2".

Se han publicado 19 artículos originales · ganado elogios 0 · Vistas 466

Supongo que te gusta

Origin blog.csdn.net/zzu957/article/details/104716940
Recomendado
Clasificación