• Java学习之多态二


    目录

    一、运用多态解决宠物喂食问题

    原理分析

    运行测试

    运行结果

     分析

    增加宠物和食物种类

    Pig类

    Rice类

    测试

    运行结果


    一、运用多态解决宠物喂食问题

    改变Master类的feed方法的参数列表

    1. package com.hspedu.poly_;
    2. public class Master {
    3. private String name;
    4. public Master(String name) {
    5. this.name = name;
    6. }
    7. public String getName() {
    8. return name;
    9. }
    10. public void setName(String name) {
    11. this.name = name;
    12. }
    13. public void feed(Animal animal, Food food){
    14. System.out.println("主人" + name + "给"+ animal.getName() + "喂" +
    15. food.getName());
    16. }
    17. }

    原理分析

    1)animal的编译类型是Animal,可以指向(接收)Animal子类的对象

    2)food的编译类型是Food,可以指向(接收)Food子类的对象

    运行测试

    在Poly01.java中测试,为了区分加~

    1. package com.hspedu.poly_;
    2. public class Poly01 {
    3. public static void main(String[] args) {
    4. Master master = new Master("小李");
    5. Dog spike = new Dog("Spike~");
    6. Bone bone = new Bone("大骨头~");
    7. master.feed(spike,bone);
    8. Cat tom = new Cat("Tom~");
    9. Fish fish = new Fish("鱼罐头~");
    10. master.feed(tom,fish);
    11. }
    12. }

    运行结果

     分析

    因为spike是Dog类的对象,Dog类是Animal的子类,Animal可以接收子类的对象的传参;bone传参的原理也是如此

    增加宠物和食物种类

    增加宠物Pig类继承Aniaml类,增加食物Rice类,继承Food类,别的都不需要,在Poly01中直接创建新对象然后调用feed方法即可,这就是多态的便利

    Pig类

    1. package com.hspedu.poly_;
    2. public class Pig extends Animal{
    3. public Pig(String name) {
    4. super(name);
    5. }
    6. }

    Rice类

    1. package com.hspedu.poly_;
    2. public class Rice extends Food{
    3. public Rice(String name) {
    4. super(name);
    5. }
    6. }

    测试

    1. package com.hspedu.poly_;
    2. public class Poly01 {
    3. public static void main(String[] args) {
    4. Master master = new Master("小李");
    5. Dog spike = new Dog("Spike~");
    6. Bone bone = new Bone("大骨头~");
    7. master.feed(spike,bone);
    8. Cat tom = new Cat("Tom~");
    9. Fish fish = new Fish("鱼罐头~");
    10. System.out.println("===============");
    11. master.feed(tom,fish);
    12. Pig pig = new Pig("猪猪侠");
    13. Rice rice = new Rice("八宝饭");
    14. System.out.println("============");
    15. master.feed(pig,rice);
    16. }
    17. }

    运行结果

  • 相关阅读:
    shell脚本监控SpringBoot服务健康状态并重启
    探究竟篇之React中的state
    使用ESP32CAM读取视频流
    大模型必备算力:CPU&GPU天梯图(2023年最新版)
    etcd分布式存储
    Java面试复习体系总结(2021版,持续更新)
    我从技术到产品经理的几点体会
    李宏毅-hw7-利用Bert完成QA
    Jquery中事件
    动作捕捉系统通过SDK与LabVIEW通信
  • 原文地址:https://blog.csdn.net/wjkqq0921/article/details/128178292