java: polimorfismo orientado a objetos

concepto

El polimorfismo es la capacidad de tener múltiples manifestaciones o formas diferentes del mismo comportamiento.
Realización: la misma interfaz utiliza diferentes instancias para realizar diferentes operaciones

lograr

Tome la clase principal como parámetro formal del método y use el objeto de la subclase como parámetro real del método para lograr el polimorfismo.

Método uno: reescribir
Método dos: interfaz
Método tres: clase abstracta y método abstracto

Ejemplo

Conversión automática de tipos (upcast)

Caso: Dueño y mascota juegan y alimentan

  • Maestro humano: Maestro
  • Categoría de mascota: Mascota -> Perro, Gato
  • Categoría de alimentos: Alimentos -> Huesos, Pescado

Mascotas:

public class Pet {
    
    
	String name;
	String sex;
	public Pet {
    
    
		super()
	}

	public Pet (String name, String sex) {
    
    
		this.name = name;
		this.sex = sex;
	}
	
	public void show () {
    
    
		System.out.println("这是一只宠物");
	}
	
	public void play () {
    
    
		System.out.println("这是一只宠物");
	}
}

Clase de perro:
logra el polimorfismo anulando el método de la clase principal

public class Dog extends Pet {
    
    
	String hobby;
	public Dog {
    
    
		super();
	}

	public Dog (String name, String sex, String hobby) {
    
    
		super()
		this.hobby = hobby;
	}
	
	@override
	public void show () {
    
    
		System.out.println("这是一只狗狗,名叫" + name);
	}
	
	@override
	public void play () {
    
    
		System.out.println(name + "正在接飞盘...");
	}
}

public class Cat extends Pet {
    
    
	String breed;
	public Cat {
    
    
		super();
	}

	public Cat (String name, String sex, String breed) {
    
    
		super()
		this.breed = breed;
	}
	
	@override
	public void show () {
    
    
		System.out.println("这是一只猫猫,名叫" + name);
	}
	
	@override
	public void play () {
    
    
		System.out.println(name + "正在走猫步...");
	}
}

Maestro humano:

public Master {
    
    
	String name;
	public Master {
    
    
		super();
	}

	public Master(String name) {
    
    
		super();
		this.name = name;
	}
	
	/*
	public void play (Dog dog) {
		dog.play()
	}
	public void play (Cat cat) {
		cat.play()
	}
	...
	*/
	// 代替为
	public void play (Pet pet) {
    
    
		pet.play()
	}
	// 将父类作为方法的形参(将Pet作为play方法的形参),将子类的对象作为方法的实参(将dog、cat作为play的实参),从而实现多态。
}

prueba:

public Test {
    
    
	public staic void main(String[] args) {
    
    
		Master master = new Master("唐伯虎");
		Dog dog = new Dog("旺财", "公", "玩游戏");
		master.play(dog);
		
		Dog cat = new Cat("猫儿", "公", "玩游戏");
		master.play(cat);
	}
}
// 旺财正在接飞盘...
// 猫儿正在走猫步...

para resumir

Condiciones para el polimorfismo:

  • Herencia (la herencia es la base del polimorfismo, no hay polimorfismo sin herencia)
  • Anular (en polimorfismo, se llama al método anulado de la subclase)
  • La variable de referencia de la clase principal apunta al objeto de la subclase: Parent p = new Child();
    tome la clase principal como el parámetro formal del método (usando Pet como el parámetro formal del método de juego), y use el objeto de la subclase como el parámetro real del método ( utilizando el perro y el gato como parámetros reales del juego), para lograr el polimorfismo.

Ventajas del polimorfismo:

  1. Eliminar el acoplamiento entre tipos
  2. Reemplazabilidad
  3. Escalabilidad
  4. Interfaz
  5. flexibilidad
  6. Simplificación

Supongo que te gusta

Origin blog.csdn.net/weixin_43972437/article/details/113802510
Recomendado
Clasificación