java语言实现吃水果问题_Java 面向对象 之 人吃水果
/**
题目: 人可以(孩子,学生,老师) 吃 水果(苹果,葡萄,芒果,菠萝)
思路:
1. 抽象出类 : 人(Person){孩子(Baby),学生(Student)}, 水果(Fruit){苹果(Apple),葡萄(Grape),芒果(Mango)}
2. 找出类的关系:
水果 -> 人
(孩子,学生) 是 人的分类 也是人只是声明可以吃水果, 但是吃水果的具体执行者
是 (孩子,学生)
(苹果,葡萄,芒果) 是 水果的分类
3. 找出属性: 孩子,学生(姓名,水果引用)
4. 找出方法: 孩子,学生都吃(eat)水果
子类->父类的转换
子类->父类后 父类引用调用子类复写的方法
作用 :解耦 也就是降低类与类之间的耦合度 提供可扩展性
*/
public class Polymorphism5 {
//打印人吃水果的信息
public void output(Person p) {
//实例化一个苹果 和 一个葡萄
Apple apple = new Apple("红富士");
Grape grape = new Grape("黑葡萄");
Mango mango = new Mango("大芒果");
PineApple pineApple = new PineApple("菠萝");
p.eat(apple);
System.out.println(p.getName() + " 吃了 " + p.getFruit().getName());
p.eat(grape);
System.out.println(p.getName() + " 吃了 " + p.getFruit().getName());
p.eat(mango);
System.out.println(p.getName() + " 吃了 " + p.getFruit().getName());
p.eat(pineApple);
System.out.println(p.getName() + " 吃了 " + p.getFruit().getName());
}
public static void main(String[] args) {
Polymorphism5 test = new Polymorphism5();
//李明吃水果
test.output(new Baby("李明"));
//张涛吃水果
test.output(new Student("张涛"));
//郭老师吃水果
test.output(new Teacher("郭老师"));
}
}
abstract class Person {
protected Fruit fruit;
protected String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public Fruit getFruit() {
return this.fruit;
}
//声明人是可以吃水果的
public abstract void eat(Fruit fruit);
}
class Teacher extends Person {
public Teacher(String name) {
super(name);
}
//吃水果
public void eat(Fruit fruit) {
this.fruit = fruit;
}
}
class Baby extends Person {
public Baby(String name) {
super(name);
}
//吃水果
public void eat(Fruit fruit) {
this.fruit = fruit;
}
}
class Student extends Person {
public Student(String name) {
super(name);
}
//吃水果
public void eat(Fruit fruit) {
this.fruit = fruit;
}
}
class Fruit {
private String name;
public Fruit(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
class PineApple extends Fruit {
public PineApple(String name) {
super(name);
}
}
class Apple extends Fruit {
public Apple(String name) {
super(name);
}
}
class Grape extends Fruit {
public Grape(String name) {
super(name);
}
}
class Mango extends Fruit {
public Mango(String name) {
super(name);
}
}
java语言实现吃水果问题_Java 面向对象 之 人吃水果相关推荐
- 简要描述java语言的特点是什么_java语言的特点是什么
Java语言本身的面向对象.简单.平台无关性.安全性.多线程等特点java语言的结构与编写方式,与c++语言类似,因此学习Java语言,不仅要了解Java语言特点,同时还要有程序设计基础和面向对象的概 ...
- java语言与c 的区别_Java语言的特点以及与C、C++的区别
Java语言为何经久不衰,受人追捧? C++的产生让面向对象的思想更有利于我们去解决问题,弥补了C的面向过程的缺陷. 那么Java语言的产生又是为何呢?首先java也是采用面向对象的思想,但又不等同于 ...
- java语言用数组接收字符_Java基础——数组应用之字符串String类
字符串String的使用 Java字符串就是Unicode字符序列,例如串"Java"就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准J ...
- JAVA语言程序设计教程张席_Java语言程序设计教程
第1章 预备知识 1 1.1 目前流行的编程语言简介 1 1.1.1 C/C 的一些概念 1 1.1.2 从C到C 2 1.1.3 面向对象初步知识 3 1.2 从C/C 到Java 4 习题 5 第 ...
- Java语言最新实用案例教程_Java语言最新实用案例教程
第1章Java语言基础 1.1初识Java程序 案例11一个简单的Java应用程序 案例12一个简单的GUI程序 1.2Java语言基础 案例13两个数的计算程序 案例14求素数 1.3数组与 ...
- java语言的多态性及特点_Java中的方法的多态性有两种形式:( )和( )。_学小易找答案...
[填空题]已知函数 ,则微分 . [填空题]. [单选题]71.用转动小滑板法车圆锥时产生( )误差的原因是小滑板转动角度计算错误. [单选题] [填空题]Java中的方法的多态性有两种形式:( )和 ...
- java语言怎样判断文件夹_JAVA语言之如何判断文件,判断文件夹是否存在的代码...
本文主要向大家介绍了JAVA语言之如何判断文件,判断文件夹是否存在的代码,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.判断文件是否存在,不存在则创建File file = ne ...
- Java语言最新实用案例教程_Java 语言实用案例教程
基本信息 书名:Java 语言实用案例教程 出版价格:48元 作者:常玉慧, 王秀梅 出版社:科学出版社 出版日期:2016-10-1 ISBN:9787030497383 字数:387000 页码: ...
- java语言中实现键盘输入_Java程序设计中的键盘输入数据的方法分析
1. 引言 高校中很多学校开设了Java语言程序设计课程,这是一门实践性很强的语言,在程序设计中经常需要从键盘随机输入所需要的数据,Java语言中的键盘输入数据没有像C语言给我们提供的scanf(), ...
最新文章
- 家长会:我的发言稿,女儿的信
- Eclipse安装反编译插件
- 渲染树构建、布局及绘制
- 2022,前端工具链十年盘点
- RabbitMQ从初学到精通一
- 中山大学曾兆阳_2010—2011学年度中山大学信科院优秀学生奖学金评选结果名单...
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础简介及入门配置
- 【华为云技术分享】云小课 | 灵活配置权限,满足存储安全(OBS权限管理介绍上篇)
- android存电话号码,如何从android中删除联系人的电话号码?
- Markdown中设置图片尺寸及添加图注
- 为什么程序员很难找到合适的另一半?
- 细致的网站开发流程有哪些呢?
- 特斯拉国产又怎样,十个月后就完蛋
- JpGrap引入以及中文乱码问题
- 相机不小心格式化了怎么恢复?内存卡格式化后能恢复数据吗
- UWA DAY 2021 议程亮相
- 汤润芝:我为什么要投资美股?(转)
- Django 学习 之ORM多表操作
- CSDN创始人蒋涛:“重应用轻生态”的AI开源模式非长久之计
- 我下载了python所有包,24个G,用以备份
热门文章
- php---一周内免登录
- Mysql定义DELETE操作触发器,将删除数据存入历史表
- minio搭建图床 配合typora实现写博客图片自动上传
- 【硬件通信协议】4. 详细解析CAN总线通信协议
- python归一化 增大差异_简学Python第六章__class面向对象编程与异常处理
- 浪潮信息m6服务器性能,展现强劲性能,浪潮M6服务器为什么能刷新SPEC多项记录...
- 提升工作效率五步走之前两步 2016-09-18 思佳真探
- 神经网络架构搜索——可微分搜索(DARTS)
- 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)
- OPCUA 设置登录用户名与密码