栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java多态1 - 引入多态,多态解决主人给不同动物喂食物的问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java多态1 - 引入多态,多态解决主人给不同动物喂食物的问题

目录

1.背景介绍

2. 使用多态机制解决喂食物问题

3.测试类

 4. 新增动物种类和食物种类

4.1 修改测试类

4.2 测试结果


1.背景介绍

在Master主人类中,feed方法有两个,主人给狗喂一次食物,主人给猫喂一次食物,他们都对应一次feed方法。那如果我们有100种动物呢?是否需要写类似100种喂养方法。

package org.example.poly_;

public class Master {
    private String name;

    public Master(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public void feed(Dog dog, Bone bone){
        System.out.println("主人" + name+"给" + dog.getName()+ "吃"+bone.getName());
    }
    public void feed(Cat cat, Fish fish){
        System.out.println("主人" + name+"给" + cat.getName()+ "吃"+fish.getName());
    }
}

2. 使用多态机制解决喂食物问题

使用多态机制,可以统一管理主人喂食物的问题。父类的引用可以指向子类。我们将feed方法做如下修改。

animal编译类型是Animal, 可以指向/接受Animal的子类对象。

food编译类型是Food,可以指向/接受Food的子类对象。

这样我们多个方法用一个方法就可以体现出来了。

    public void feed(Animal animal, Food food){
        System.out.println("主人" + name+"给" + animal.getName()+ "吃"+animal.getName());
    }

3.测试类
public static void main(String[] args) {
        Master tom = new Master("tom");
        Dog dog = new Dog("dog");
        Bone bone = new Bone("bone");
        Cat cat = new Cat("cat");
        Fish fish = new Fish("fish");
        tom.feed(dog, bone);
        tom.feed(cat, fish);
    }

我们来看看测试类的运行结果

 4. 新增动物种类和食物种类

新增动物种类Pig, 新增食物种类Rice,让喂养变得更简单。

Pig类继承Animal对象

package org.example.poly_;

public class Pig extends Animal{

    public Pig(String name) {
        super(name);
    }
}

Rice类继承Food对象

package org.example.poly_;

public class Rice extends Food{
    public Rice(String name) {
        super(name);
    }
}

4.1 修改测试类
    public static void main(String[] args) {
        Master tom = new Master("tom");
        Dog dog = new Dog("dog");
        Bone bone = new Bone("bone");
        Cat cat = new Cat("cat");
        Fish fish = new Fish("fish");
        Pig pig = new Pig("pig");
        Rice rice = new Rice("rice");
        tom.feed(dog, bone);
        tom.feed(cat, fish);
        tom.feed(pig, rice);
    }

4.2 测试结果
    public static void main(String[] args) {
        Master tom = new Master("tom");
        Dog dog = new Dog("dog");
        Bone bone = new Bone("bone");
        Cat cat = new Cat("cat");
        Fish fish = new Fish("fish");
        Pig pig = new Pig("pig");
        Rice rice = new Rice("rice");
        tom.feed(dog, bone);
        tom.feed(cat, fish);
        tom.feed(pig, rice);
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/867677.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号