java多态

多态

1.什么是多态?

多态就是:同一个引用类型,使用不同的实例而执行不同的操作

2.为什么要使用多态?

多态解决了程序的拓展性问题。

定义方法的时候,使用父类类型作为参数,将来使用时,使用具体的子类类型操作

例:主人(Mater)喂养宠物(Pet),宠物有很多,有猫(Cat),狗(Dog),蛇(Snake)。

主人有方法喂养feed(Pet pet),宠物有方法吃(eat),宠物吃的东西各不相同,所以要根据不同的宠物喂养不同的食物,主人喂养的方法中是使用的所有宠物的父类Pet作为参数,将来使用的时候,我们可以用父类的引用指向子类的对象,例:Pet cat = new Cat();这里我们用引用名为cat的引用指向了子类Cat,能这样定义的原因是一个对象的编译类型与运行类型可以不一致,编译类型在定义对象时,就确定了,无法改变,但是运行类型是可以改变的,编译类型就是=号的左边,即Pet,运行类型就是=号右边,即Cat,当我们调用喂养这个方法的时候(feed(cat)),编译时feed方法调用的是pet.eat(),而实际运行时,由于cat引用指向的时Cat对象,所以实际调用的是Cat.eat。这也就是多态。

代码演示:

主人(Mater):

public class Mater {
​
    public void feed(Pet pet){
         //编译时多态: 编译阶段实际调用对象属于哪个类,则调用的是哪个类的方法
        pet.eat();
    }
}

宠物(Pet):

public abstract class Pet {
​
   public abstract void eat();
   
}

猫(Cat):

  public static class Cat extends Pet{
​
       @Override
       public void eat() {
           System.out.println("猫吃鱼....");
       }
   }

狗(Dog):

public static class Dog extends Pet{
​
       @Override
       public void eat() {
           System.out.println("狗吃狗粮...");
       }
   }

蛇(Snake):

ublic static class Snake extends Pet{
​
       @Override
       public void eat() {
           System.out.println("蛇吃老鼠");
       }
   }

测试运行:

public class Text_01 {
​
    public static void main(String[] args) {
        //主人
        Mater mater = new Mater();
​
        //宠物-狗
        //Pet   <-  Dog
        Pet dog = new Pet.Dog();
​
        Pet cat = new Pet.Cat();
​
        //执行时多态: 执行代码时,根据对象引的引用查找堆中实际对象的方法原型。
        mater.feed(dog);
​
        mater.feed(cat);
​
    }
}
​

3.怎么实现多态?

1.继承,子类重写父类的方法。

2.父类的引用指向子类的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值