以下是学习韩顺平老师的JAVASE多态部分后的自我复习(素材来自于公开课件,侵删)
1.先看一个问题
![在这里插入图片描述](https://img-blog.csdnimg.cn/e0b71dc1e4364a81a91c091e6c452238.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaGNqV2FrZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)
- 在学习多态之前 , 我们应该如何处理这个问题?
- 解决方法比较重复且麻烦 , 一旦有新的动物和对应的食物就要不停地编写新的食物子类、动物子类 ; 代码的复用性低 , 而且不利于维护.
- 而多态可以帮助我们解决这个问题.
- 示例如下:
public class Animal {
private String name ;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
-----------------------------
public class Food {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Food(String name) {
this.name = name;
}
}
public class Meat extends Food {
public Meat(String name){
super(name);
}
}
---------------
public class Cat extends Animal{
public Cat(String name){
super(name);
}
}
public class Master {
private String name = "hcj";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Master(String name) {
this.name = name;
}
public void Feed(Animal animal , Food food){
System.out.println("主人" + name + "给" + animal.getName() + "喂" + food.getName());
}
public void Feed(Cat cat , Meat meat){
System.out.println("主人" + name + "给" + cat.getName() + "喂" + meat.getName());
}
}
-----------------------------