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);}
Java多态1 - 引入多态,多态解决主人给不同动物喂食物的问题相关推荐
- Java-使用多态实现主人给宠物投喂食物功能
Java-使用多态实现主人给宠物投喂食物功能 1. Pet Class package cn.animal.output;import java.util.Scanner;/*** @author J ...
- java饲养员喂动物_做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处...
做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处 interface Animal{ //动物的接口 public void eat(Food food); // ...
- java饲养员喂动物_体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物 | 学步园...
package com.softeem.demo; /** *@authorleno *动物的接口*/ interface Animal { publicvoid eat(Food food); } ...
- Java进阶(四)多态
四.多态 1.面向对象三大特征之三:多态 a.多态的概述.多态的形式 Ⅰ.什么是多态? 同类型的对象,执行同一个行为,会表现出不同的行为特征.(例如:猫和狗都是动物类型,执行的行为不一样,猫跑的行为是 ...
- Java入门part6--继承和多态
继承 // Animal.java public class Animal {public String name;public Animal(String name) {this.name = na ...
- Java实验3继承、多态
继承.多态(接口和包) 实验目的 (1) 掌握Java语言中继承和多态的相关概念 (2) 掌握Java程序设计中继承和多态机制的使用 (3) 掌握Java语言中接口和包的概念及使用 实验内容及要求 仿 ...
- Java中的继承 与 多态(中)
先导: 我们在<Java中的继承 与 多态(上)>当中讲解了如下几个问题, 1.继承是什么 2.super关键字 3.特殊考点-父子类中不同代码块的实现顺序 所以现在我们对于继承 ...
- Java回顾 封装 继承和多态
封装 什么是封装 封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装时的权限控制符区别如下: 封装的意义 对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象 ...
- Java基础:继承、多态、抽象、接口
第一讲 继承 一.继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 2.通过extends关键字可以实现类与类的 ...
最新文章
- 【任务脚本】0601更新autojs客户端,回顾之前战绩,注意事项淘宝618活动领喵币autojs脚本,向大神致敬...
- java类与对象_Java类与对象
- 【arc101】比赛记录
- 【技巧总结】Penetration Test Engineer[2]-Information gathering
- 计算机一级某学校师资情况表,2011年计算机一级考试MS OFFICE上机考试指导
- java steam filter 动态条件_Filter解决全站编码问题
- python stdout,在Python中的Stdout编码
- nodejs+vue+elementui企业考勤管理系统
- 2012年九月六号阿里巴巴面试
- (15,7)循环码的编译码方法
- java中的保护(protected)修饰符的理解
- 2010提升你幽默感的语句
- 创建nfs服务器启动httpd服务但是访问的一直都是欢迎页面
- 公司财务笔记-岭南学院辅修
- 中国最大规模线下亲子嘉年华举行 350余萌娃遭遇“十万个为什么”
- vs2012 nuget 基础连接已经关闭:发送时发生错误
- 集成显卡 独立显卡 CPU核心显卡的区别
- 达内学python_通过在达内学习python我的职场之路更加宽广了
- 华为服务器linux版的网卡驱动下载,华为服务器RH2288H V3 服务器上安装Windows2008 R2 SP1指导书...
- gperftools安装与使用
热门文章
- 约瑟夫环的两种实现方法
- 好记性不如烂笔头、多记笔记、多总结、多反思
- Python正则表达式(菜鸡版)
- 到底微信公众号和头条号哪个更适合自媒体新人
- 以太坊2.0各个阶段简单介绍
- 论文阅读5 | Recent Advances in Data-Driven Wireless Communication Using Gaussian Processes: A Comprehens
- 微信小程序之toast等弹框提示
- spring.jpa.hibernate.naming.physical-strategy
- Record: Linux指令笔记
- 正负压产生电路(9V,12V)