多态

tech2026-01-15  7

问题

 

 分析:

public class Master { public void feed( Dog dog ) { dog.eat(); } public void feed( Penguin pgn ) { pgn.eat(); } public void feed( XXX xxx ) { xxx.eat(); } … … }

 

… … Master master = new Master(); master.feed(dog); master.feed(penguin); master.feed(xxx); … …

实现多态的三个要素:

编写具有继承关系的父类和子类

子类重写父类方法

使用父类的引用指向子类的对象

向上转型:

Pet pet = new Dog();

自动类型转换

实现多态的两种形式

使用父类作为方法形参实现多态

使用父类作为方法返回值实现多态

使用多态优化主人给宠物喂食

父类到子类的转换

向下转型(强制类型转换)

instanceof运算符

public class Master { public void play(Pet pet){ if (pet instanceof Dog) { //如果传入的是狗狗 Dog dog = (Dog) pet; dog.catchingFlyDisc(); }else if (pet instanceof Penguin) { //如果传入的是企鹅 Penguin pgn = (Penguin) pet; pgn.swimming(); } } }

使用的多态有什么好处?

提高代码的的简洁性

提高了代码的可扩展性和可维护性

 

 

 

 

最新回复(0)