Java基础___面向对象__多态

多态

多态的优点
  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性
多态存在的三个必要条件
  • 继承
  • 重写
  • 父类引用指向子类对象

比如:

Parent p = new Child();

当使用多态方法调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以时程序有良好的扩展,并可以对所以类的对象进行通用处理。

实例:

public class Test{
    public static void main(String[] args){
        show(new Cat());	// 以 Cat 对象调用 show 方法
        show(new Dog());	// 以 Dog 对象调用 show 方法
        
        Animal a = new Cat();	//向上转型
       	a.eat();	// 调用的 Cat 的 eat
        Cat c = (Cat)a;	//向下转型
        c.work();	// 调用的是 Cat 的 work
    }
    public static void show(Animal a){
        a.eat();
        //类型判断
        if(a instanceof Cat){	// 猫做的事情
            Cat c = (Cat)a;
            c.work();
        }else if(a instanceof Dog){	//狗做的事情
            Dog c = (Dog)a;
            c.work();
        }
    }
}

abstract class Animal(){
    abstract void eat();
}

class Cat extends Animal {
    public void eat(){
        System.out.println("吃鱼");
    }
    public void work(){
        System.out.println("抓老鼠");
    }
}

class Dog extends Animal {
    public void eat(){
        System.out.println("吃骨头");
    }
    public void work(){
        System.out.println("看门");
    }
}

运行结果:

吃鱼
抓老鼠
吃骨头
看门
吃鱼
抓老鼠
多态的实现方式
方式一:重写
方式二:接口
  1. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的的接口类型
  2. java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。
方式二:抽象类和抽象方法
posted @ 2020-08-03 22:45  Keep_The  阅读(55)  评论(0)    收藏  举报