多态的好处和弊端:
1.多态的好处:提高了程序的扩展性
具体:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作
2.弊端:不能使用子类的特有功能
如果想要调用子类里面的方法,就需要向下转型。
/**
* @author Wrry
* @data 2020-08-12
* @desc 动物父类
*/
public class DongWu {
public void eat(){
System.out.println("动物类:动物都吃东西");
}
}
/**
* @author Wrry
* @data 2020-08-12
* @desc 操作类
*/
public class DongWuOperation {
/* //创建一个操作猫类对象
public void CZM(Cat c){
c.eat();
}
//创建一个操作鱼类对象
public void CZY(Fish f){
f.eat();
}*/
public void CZDongWu(DongWu d){
d.eat();
}
}
/**
* @author Wrry
* @data 2020-08-12
* @desc 猫类
*/
public class Cat extends DongWu{
//从写DongWu方法中的eat方法
@Override
public void eat() {
System.out.println("猫喜欢吃鱼");
}
}
/**
* @author Wrry
* @data 2020-08-12
* @desc 鱼类
*/
public class Fish extends DongWu{
public void eat(Fish f){
System.out.println("鱼吃虾米");
}
}
/**
* @author Wrry
* @data 2020-08-12
* @desc 测试类
*/
public class Test {
public static void main(String[] args) {
//创建操作对象并调用方法
DongWuOperation d = new DongWuOperation();
//创建猫对象
Cat c = new Cat();
//把猫对象传给DongWuOperation里面的 CZDW方法
d.CZDongWu(c);
Fish f = new Fish();
d.CZDongWu(f);
}
}
向下转型,向上转型代码参考:
/**
* @author Wrry
* @data 2020-08-12
* @desc 猫类
*/
public class Cat extends DongWu{
//从写DongWu方法中的eat方法
@Override
public void eat() {
System.out.println("猫吃饭了");
}
public void play(){
System.out.println("猫出去玩了");
}
}
/**
* @author Wrry
* @data 2020-08-12
* @desc 动物父类
*/
public class DongWu {
public void eat(){
System.out.println("动物类:动物都吃东西");
}
}
/**
* @author Wrry
* @data 2020-08-12
*/
public class Test {
public static void main(String[] args) {
//多态,向上转型
DongWu d = new Cat();
d.eat();
// 错误的调不到 d.play();
//向下转型
Cat c = (Cat) d;
c.eat();
c.play();
}
}
注:纯属个人理解。仅供参考