博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 面向对象 之 多态实例3
阅读量:5159 次
发布时间:2019-06-13

本文共 2764 字,大约阅读时间需要 9 分钟。

/**    题目: (孩子,学生) 吃 水果(苹果,葡萄,芒果,菠萝)    思路:        1. 抽象出类 : {孩子(Baby),学生(Student)}, 水果(Fruit){苹果(Apple),葡萄(Grape),芒果(Mango)}        2. 找出类的关系:             水果 -> (孩子,学生)            (苹果,葡萄,芒果) 是 水果的分类        3. 找出属性: 孩子,学生(姓名,水果引用)          4. 找出方法: 孩子,学生都吃(eat)水果    子类->父类的转换 作用 :解耦 也就是降低类与类之间的耦合度 提供可扩展性*/public class Polymorphism4{    public static void main(String[] args)    {        //实例化一个Baby        Baby baby=new Baby("李明");        //实例化一个学生        Student stu=new Student("张涛");        //实例化一个苹果 和 一个葡萄        Apple apple=new Apple("红富士");        Grape grape=new Grape("黑葡萄");        Mango mango=new Mango("大芒果");        PineApple pineApple=new PineApple("菠萝");        //李明吃水果        baby.eat(apple);        System.out.println(baby.getName()+" 吃了 "+baby.getFruit().getName());        baby.eat(grape);        System.out.println(baby.getName()+" 吃了 "+baby.getFruit().getName());        baby.eat(mango);        System.out.println(baby.getName()+" 吃了 "+baby.getFruit().getName());        baby.eat(pineApple);        System.out.println(baby.getName()+" 吃了 "+baby.getFruit().getName());        //张涛吃水果        stu.eat(apple);        System.out.println(stu.getName()+" 吃了 "+stu.getFruit().getName());        stu.eat(grape);        System.out.println(stu.getName()+" 吃了 "+stu.getFruit().getName());        stu.eat(mango);        System.out.println(stu.getName()+" 吃了 "+stu.getFruit().getName());        stu.eat(pineApple);        System.out.println(stu.getName()+" 吃了 "+stu.getFruit().getName());            }}class Baby{    private Fruit fruit;    private String name;    public Baby(String name)    {        this.name=name;    }    public String getName()    {        return this.name;    }    public Fruit getFruit()    {        return this.fruit;    }        /**        吃水果    */    public void eat(Fruit fruit)    {        this.fruit=fruit;    }}class Student{    private Fruit fruit;    private String name;    public Student(String name)    {        this.name=name;    }    public String getName()    {        return this.name;    }    public Fruit getFruit()    {        return this.fruit;    }        /**        吃水果    */    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);    }}

转载于:https://www.cnblogs.com/verejava/p/9202012.html

你可能感兴趣的文章
获取国内随机IP的函数
查看>>
今天第一次写博客
查看>>
江城子·己亥年戊辰月丁丑日话凄凉
查看>>
IP V4 和 IP V6 初识
查看>>
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
『Raid 平面最近点对』
查看>>
【ADO.NET基础-数据加密】第一篇(加密解密篇)
查看>>
C语言基础小结(一)
查看>>
STL中的优先级队列priority_queue
查看>>
UE4 使用UGM制作血条
查看>>
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>
Program exited with code **** 相关解释
查看>>
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>