看了这个,我终于知道了为什么要用多态了
看了大量的资料和视频之后,我终于搞清了多态的作用了,废话不多说,直接上干货!
多态的好处:
1.提高了代码的可维护性
2.提高了代码的扩展性
多态的作用:
可以当做形式参数,可以接受任意子类对象
多态的弊端:
不能使用子类特有的属性和行为
案例演示:
父类与子类:
class Animal{
public void eat(){
System.out.println("动物吃饭");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("猫吃鱼");
}
public void CatchMouse(){
System.out.println("猫抓老鼠");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("狗吃骨头");
}
}
主类:
//加入现在需要创建三个猫对象和三个狗对象并使用eat方法,如果我们按照正常的思路:
class Demo_Animal{
public static void main(String[] args) {
Cat c1=new Cat();
Cat c2=new Cat();
Cat c3=new Cat();
Dog d1=new Dog();
Dog d2=new Dog();
Dog d3=new Dog();
c1.eat();
c2.eat();
c3.eat();
d1.eat();
d2.eat();
d3.eat();
}
}
//显然这样写代码冗余,我们可以先优化一下创建对象和调用方法的过程,把创建对象和调用方法的过程提取成为一个方法
class Demo_Animal{
public static void main(String[] args) {
method(Cat c1);
method(Cat c2);
method(Cat c3);
method(Dog d1);
method(Dog d2);
method(Dog d3);
}
public static void method(Cat c){
c.eat();
}
public static void method(Dog d){
d.eat();
}
}
//这个时候,如果有十个,百个类,猫,狗,猪,牛,羊........我们每次都需要写一个对应的method,这样是不现实的,因
//此我们需要进一步优化,使用多态,把父类当做形参
class Demo_Animal{
public static void main(String[] args) {
method(Cat c1);
method(Cat c2);
method(Cat c3);
method(Dog d1);
method(Dog d2);
method(Dog d3);
}
public static void method(Animal a){
a.eat();
}
}
从这个案例中我们可以明显的感受到多态的优点,我所使用的父类作为形参的方法也是在工作时最为常用的一种方式,以上是我花了大功夫总结的多态,希望对看到的你有所帮助!