java中的多态
多态:多态是建立在继承和重写的基础上.
1.生活中多态的概念:同一种事物由于外界条件不同,而执行不同操作或产生不同状态.
2.程序中多态的概念:用父类或父接口作为数据类型,指向不同子类对象调用同一个方法,而执行不同操作.
多态的第一种应用:
用父类或父接口作为数据类型,创建不同子类对象,而执行不同操作.
// 多态的第一种应用
// 父类作为一种数据类型,创建子类对象
Pet p1=new Cat();
Pet d1=new Dog();
p1.eat();
d1.eat();
多态的第二种应用:
用父类或父接口作为方法的形参,实参传递子类对象,而执行不同操作
// 多态的第二种应用
// 父类作为方法的形参,实参传递子类对象
Cat cat=new Cat();
Dog dog=new Dog();
Master master=new Master();
master.feedPet(cat);
master.feedPet(dog);
public class Master {
public void feedPet(Pet p){
System.out.println("主人在喂食");
p.eat();
}
多态的第三种应用:
用父类或父接口作为方法的返回值类型,实际返回一个子类对象
/**
* 多态的第三种应用,父类充当返回值类型,实际上返回一个子类对象
*/
// 创建master对象
Master master = new Master();
Pet p1=master.lookupPet("猫");
p1.voice();
Pet pet=master.lookupPet("狗");
pet.voice();
// 父类作为返回值类型
public Pet lookupPet(String name) {
Pet p = null;
if (name.equals("猫")){
p=new Cat();
}
else if (name.equals("狗")){
p = new Dog();
}
return p;
}