/** 题目: (孩子,学生) 吃 水果(苹果,葡萄,芒果,菠萝) 思路: 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); }}