/**

题目: 人可以(孩子,学生,老师) 吃 水果(苹果,葡萄,芒果,菠萝)

思路:

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 面向对象 之 人吃水果相关推荐

  1. 简要描述java语言的特点是什么_java语言的特点是什么

    Java语言本身的面向对象.简单.平台无关性.安全性.多线程等特点java语言的结构与编写方式,与c++语言类似,因此学习Java语言,不仅要了解Java语言特点,同时还要有程序设计基础和面向对象的概 ...

  2. java语言与c 的区别_Java语言的特点以及与C、C++的区别

    Java语言为何经久不衰,受人追捧? C++的产生让面向对象的思想更有利于我们去解决问题,弥补了C的面向过程的缺陷. 那么Java语言的产生又是为何呢?首先java也是采用面向对象的思想,但又不等同于 ...

  3. java语言用数组接收字符_Java基础——数组应用之字符串String类

    字符串String的使用 Java字符串就是Unicode字符序列,例如串"Java"就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准J ...

  4. 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 第 ...

  5. Java语言最新实用案例教程_Java语言最新实用案例教程

    第1章Java语言基础 1.1初识Java程序 案例11一个简单的Java应用程序 案例12一个简单的GUI程序 1.2Java语言基础 案例13两个数的计算程序 案例14求素数 1.3数组与 ...

  6. java语言的多态性及特点_Java中的方法的多态性有两种形式:( )和( )。_学小易找答案...

    [填空题]已知函数 ,则微分 . [填空题]. [单选题]71.用转动小滑板法车圆锥时产生( )误差的原因是小滑板转动角度计算错误. [单选题] [填空题]Java中的方法的多态性有两种形式:( )和 ...

  7. java语言怎样判断文件夹_JAVA语言之如何判断文件,判断文件夹是否存在的代码...

    本文主要向大家介绍了JAVA语言之如何判断文件,判断文件夹是否存在的代码,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.判断文件是否存在,不存在则创建File file = ne ...

  8. Java语言最新实用案例教程_Java 语言实用案例教程

    基本信息 书名:Java 语言实用案例教程 出版价格:48元 作者:常玉慧, 王秀梅 出版社:科学出版社 出版日期:2016-10-1 ISBN:9787030497383 字数:387000 页码: ...

  9. java语言中实现键盘输入_Java程序设计中的键盘输入数据的方法分析

    1. 引言 高校中很多学校开设了Java语言程序设计课程,这是一门实践性很强的语言,在程序设计中经常需要从键盘随机输入所需要的数据,Java语言中的键盘输入数据没有像C语言给我们提供的scanf(), ...

最新文章

  1. 家长会:我的发言稿,女儿的信
  2. Eclipse安装反编译插件
  3. 渲染树构建、布局及绘制
  4. 2022,前端工具链十年盘点
  5. RabbitMQ从初学到精通一
  6. 中山大学曾兆阳_2010—2011学年度中山大学信科院优秀学生奖学金评选结果名单...
  7. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础简介及入门配置
  8. 【华为云技术分享】云小课 | 灵活配置权限,满足存储安全(OBS权限管理介绍上篇)
  9. android存电话号码,如何从android中删除联系人的电话号码?
  10. Markdown中设置图片尺寸及添加图注
  11. 为什么程序员很难找到合适的另一半?
  12. 细致的网站开发流程有哪些呢?
  13. 特斯拉国产又怎样,十个月后就完蛋
  14. JpGrap引入以及中文乱码问题
  15. 相机不小心格式化了怎么恢复?内存卡格式化后能恢复数据吗
  16. UWA DAY 2021 议程亮相
  17. 汤润芝:我为什么要投资美股?(转)
  18. Django 学习 之ORM多表操作
  19. CSDN创始人蒋涛:“重应用轻生态”的AI开源模式非长久之计
  20. 我下载了python所有包,24个G,用以备份

热门文章

  1. php---一周内免登录
  2. Mysql定义DELETE操作触发器,将删除数据存入历史表
  3. minio搭建图床 配合typora实现写博客图片自动上传
  4. 【硬件通信协议】4. 详细解析CAN总线通信协议
  5. python归一化 增大差异_简学Python第六章__class面向对象编程与异常处理
  6. 浪潮信息m6服务器性能,展现强劲性能,浪潮M6服务器为什么能刷新SPEC多项记录...
  7. 提升工作效率五步走之前两步 2016-09-18 思佳真探
  8. 神经网络架构搜索——可微分搜索(DARTS)
  9. 深度搜索—-深度搜索解决矩阵搜索问题(水洼数计算)
  10. OPCUA 设置登录用户名与密码