什么是多态?
多态(polymorphism)是具有表现多种形态的能力的特征,专业说法,同一个实现接口,使用不同的实例而执行不同的操作。
★子类----->父类的转换(向上转型)相反则是向下转型。
1,父类引用new指向子类对象 (向上转型)子类到父类的转换,自动转换。
2,此时通过父类应用变量调用的是子类的方法,不是父类的方法
【缺点】:此时无法调用子类的独有方法!
实现多态的2种方式 :
1.父类作为方法形参实现多态
2.父类作为方法返回值实现多态
关键代码涉及如下:
/**
小狗类,继承Pet宠物信息类
*/
public class Dog extends Pet {
private String zhonglei;
public String getZhonglei() {
return this.zhonglei;
}
public void setZhonglei(String zhonglei) {
this.zhonglei = zhonglei;
}
public Dog() {
}
public Dog(String name, int jiankangzhi, String zhonglei, String names) {
super(name, jiankangzhi, names);
this.zhonglei = zhonglei;
}
public Dog(String names) {
super(names);
}
public void Show() {
super.setJiankangzhi(this.getJiankangzhi() + 5);
System.out.println("小狗" + this.getName() + " 吃饱饭了,健康值增加:" + this.getJiankangzhi());
}
public void Method() {
System.out.println("小狗" + this.getName() + ",正在与" + super.getNames() + "玩耍");
}
}
/**
宠物主人类
*/
public class Master {
private String names;
public String getNames() {
return this.names;
}
public void setNames(String names) {
this.names = names;
}
public void Feed(Pet pp) {
if (pp instanceof Dog) {
Dog dog = (Dog)pp;
dog.Show();
dog.Method();
} else {
//其它宠物类
}
}
public Master(String names) {
this.names = names;
}
}
/**
宠物总信息类
*/
public abstract class Pet {
//此处省略了封装方法...
private String name;
private int jiankangzhi;
private int love;
private String names;
}
人生在勤,不索何获。—— 张衡