-
多态的三种应用
一共五个类
-
第一个:父类(宠物类)
/**
* 宠物类
*
* @author 小陈
* @version 创建时间:2021年12月22日下午2:44:14
*/
public class Pet {
/**
* 昵称
*/
public String name;
/**
* 年龄
*/
public int ega;
/**
* 品种
*/
public String variety;
/**
* 宠物叫方法
*/
public void say() {
System.out.println("宠物在叫");
}
/**
* 宠物吃方法
*/
public void eat() {
System.out.println("宠物在吃");
}
}
-
第二个:子类(狗类,继承了宠物类)
/**
* 狗类继承宠物类
*
* @author 小陈
* @version 创建时间:2021年12月22日下午3:14:10
*/
public class Dog extends Pet {
/**
* 父类的eat方法重写
*/
@Override
public void eat() {
System.out.println("狗在吃东西");
}
/**
* 父类的say方法重写
*/
@Override
public void say() {
System.out.println("狗在吠");
}
}
-
第三个:子类(猫类,继承了宠物类)
/**
* 猫类继承宠物类
*
* @author 小陈
* @version 创建时间:2021年12月22日下午2:43:46
*/
public class Cat extends Pet {
/**
* 父类eat方法重写
*/
@Override
public void eat() {
System.out.println("猫在吃猫粮");
}
/**
* 父类say方法重写
*/
@Override
public void say() {
System.out.println("猫在喵喵叫");
}
}
-
第四个:主人类
/**
* 主人类
*
* @author 小陈
* @version 创建时间:2021年12月22日下午3:25:18
*/
public class Master {
/**
* 主人喂食的方法 多态的第二种应用:用父类作为方法形参,实参传任何一个子类对象,调用相同方法,执行不同操作
*
* @param p
*/
public void feedpet(Pet p) {
System.out.println("主人在喂食");
p.eat();
}
/**
* 查看宠物的方法 多态的第三种应用: 用父类作为方法返回值,实现子类对象,调用相同方法,执行不同操作
*
* @param name
* @return
*/
public Pet lookPet(String name) {
// 声明宠物对象
Pet p = null;
if (name.equals("狗")) {
p = new Dog();
} else if (name.equals("猫")) {
p = new Cat();
}
return p;
}
}
-
第五个:测试类(多态的三种应用)
/**
* 测试多态的应用
*
* @author 小陈
* @version 创建时间:2021年12月22日下午3:20:53
*/
public class Test {
public static void main(String[] args) {
/* 多态的第一种应用: */
// 用父类做数据类型,创建子类对象,调用相同方法,执行不同操作
// 常用!提高了程序的可维护性 ,提高了后期的可扩展性!
// 创建对象
Pet xc = new Dog();
Pet xx = new Cat();
// 用对象调用方法
xc.eat();
xc.say();
xx.eat();
xx.say();
/* 多态的第二种应用 */
// 用父类作为方法形参,实参传任何一个子类对象,调用相同方法,执行不同操作
// 创建对象
Master m1 = new Master();
Dog d1 = new Dog();
Cat c1 = new Cat();
// 用对象调用方法
m1.feedpet(d1);
m1.feedpet(c1);
/* 多态的第三种应用 */
// 用父类作为方法返回值,实现子类对象,调用相同方法,执行不同操作
// 创建对象
Master m2 = new Master();
// 用对象调用方法
Pet p1 = m2.lookPet("猫");
Pet p2 = m2.lookPet("狗");
p1.say();
p2.say();
}
}
多态的第一种应用:
-
用父类做数据类型,创建子类对象,调用相同方法,执行不同操作
常用!提高了程序的可维护性 ,提高了后期的可扩展性!
// 创建对象
Pet xc = new Dog();
Pet xx = new Cat();
// 用对象调用方法
xc.eat();
xc.say();
xx.eat();
xx.say();
多态的第二种应用:
-
用父类作为方法形参,实参传任何一个子类对象,调用相同方法,执行不同操作
// 创建对象
Master m1 = new Master();
Dog d1 = new Dog();
Cat c1 = new Cat();
// 用对象调用方法
m1.feedpet(d1);
m1.feedpet(c1);
多态的第三种应用:
-
用父类作为方法返回值,实现子类对象,调用相同方法,执行不同操作
// 创建对象
Master m2 = new Master();
// 用对象调用方法
Pet p1 = m2.lookPet("猫");
Pet p2 = m2.lookPet("狗");
p1.say();
p2.say();