一、多态的概念
什么叫做多态
1、生活中的多态:不同类型的打印机效果不同(即同一种事物,由于条件不同,产生的结果也不同)。
2、程序中的多态:多态:同一个引用类型,使用不同的实例而执行不同操作
二、如何实现多态
1、使用多态实现思路
--编写父类
-- 编写子类,子类重写父类方法
--运行时,使用父类的类型
2、实现多态的两种形式
--使用父类作为方法形参实现多态
--使用父类作为方法返回值实现多态
三、使用父类作为方法形参实现多态
1、实现多态优化主人给宠物喂食
public class Master
public void feed (Pet pet){
pet.eat();
}
}
四、使用父类作为方法返回值实现多态
1、使用多态实现领养宠物
---使用父类作为方法返回值
---实现思路
----在Master类添加领养方法getPet(String typeld)
----创建测试类,根据主人选择宠物类型编号来领养宠物
--public class Master{
public Pet getPet(String typeld) }
... ...
}
五、多态示例代码
package object;
public class TestPolym { class Animal {
int age=10;
public void shout(){
System.out.println("叫了一声!");
public static void main(String[] args) {
Animal animal = new Dog(); //向上可以自动转型
System.out.println(animal.age); //属性调用时,仍然是基类的属性 }
// animal.shout(); }
class Dog extends Animal {
int age=28;
animalCry(new Dog());
//传的具体是哪一个类就调用哪一个类的方法。大大提高了程序的可扩展性。
//如果没有多态,我们这里需要写很多重载的方法。如果增加一种动物,就需要 public void shout() {
System.out.println("旺旺旺!");
}
//有了多态,只需要增加这个类继承Animal基类就可以了。
animalCry(new Cat());
Dog dog = (Dog) animal; //编写程序时,如果想调用运行时类型的方法
dog.gnawBone();
System.out.println(dog instanceo
System.out.println(animal instanceof Cat);
System.out.println(animal instanceof Dog);
public void gnawBone(){
System.out.println(“我在啃骨头");
}
}
} class Cat extends Animal {
int age=18;
public void shout() {
System.out.println("喵喵喵喵!");
}
static void animalCry(Animal a){
a.shout();
}