目录

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);}

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

  1. Java-使用多态实现主人给宠物投喂食物功能

    Java-使用多态实现主人给宠物投喂食物功能 1. Pet Class package cn.animal.output;import java.util.Scanner;/*** @author J ...

  2. java饲养员喂动物_做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处...

    做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处 interface Animal{ //动物的接口    public void eat(Food food); // ...

  3. java饲养员喂动物_体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物 | 学步园...

    package com.softeem.demo; /** *@authorleno *动物的接口*/ interface Animal { publicvoid eat(Food food); } ...

  4. Java进阶(四)多态

    四.多态 1.面向对象三大特征之三:多态 a.多态的概述.多态的形式 Ⅰ.什么是多态? 同类型的对象,执行同一个行为,会表现出不同的行为特征.(例如:猫和狗都是动物类型,执行的行为不一样,猫跑的行为是 ...

  5. Java入门part6--继承和多态

    继承 // Animal.java public class Animal {public String name;public Animal(String name) {this.name = na ...

  6. Java实验3继承、多态

    继承.多态(接口和包) 实验目的 (1) 掌握Java语言中继承和多态的相关概念 (2) 掌握Java程序设计中继承和多态机制的使用 (3) 掌握Java语言中接口和包的概念及使用 实验内容及要求 仿 ...

  7. Java中的继承 与 多态(中)

    先导: 我们在<Java中的继承 与 多态(上)>当中讲解了如下几个问题,  1.继承是什么   2.super关键字   3.特殊考点-父子类中不同代码块的实现顺序 所以现在我们对于继承 ...

  8. Java回顾 封装 继承和多态

    封装 什么是封装 封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装时的权限控制符区别如下: 封装的意义 对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象 ...

  9. Java基础:继承、多态、抽象、接口

    第一讲    继承 一.继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 2.通过extends关键字可以实现类与类的 ...

最新文章

  1. 【任务脚本】0601更新autojs客户端,回顾之前战绩,注意事项淘宝618活动领喵币autojs脚本,向大神致敬...
  2. java类与对象_Java类与对象
  3. 【arc101】比赛记录
  4. 【技巧总结】Penetration Test Engineer[2]-Information gathering
  5. 计算机一级某学校师资情况表,2011年计算机一级考试MS OFFICE上机考试指导
  6. java steam filter 动态条件_Filter解决全站编码问题
  7. python stdout,在Python中的Stdout编码
  8. nodejs+vue+elementui企业考勤管理系统
  9. 2012年九月六号阿里巴巴面试
  10. (15,7)循环码的编译码方法
  11. java中的保护(protected)修饰符的理解
  12. 2010提升你幽默感的语句
  13. 创建nfs服务器启动httpd服务但是访问的一直都是欢迎页面
  14. 公司财务笔记-岭南学院辅修
  15. 中国最大规模线下亲子嘉年华举行 350余萌娃遭遇“十万个为什么”
  16. vs2012 nuget 基础连接已经关闭:发送时发生错误
  17. 集成显卡 独立显卡 CPU核心显卡的区别
  18. 达内学python_通过在达内学习python我的职场之路更加宽广了
  19. 华为服务器linux版的网卡驱动下载,华为服务器RH2288H V3 服务器上安装Windows2008 R2 SP1指导书...
  20. gperftools安装与使用

热门文章

  1. 约瑟夫环的两种实现方法
  2. 好记性不如烂笔头、多记笔记、多总结、多反思
  3. Python正则表达式(菜鸡版)
  4. 到底微信公众号和头条号哪个更适合自媒体新人
  5. 以太坊2.0各个阶段简单介绍
  6. 论文阅读5 | Recent Advances in Data-Driven Wireless Communication Using Gaussian Processes: A Comprehens
  7. 微信小程序之toast等弹框提示
  8. spring.jpa.hibernate.naming.physical-strategy
  9. Record: Linux指令笔记
  10. 正负压产生电路(9V,12V)