Java 面向对象 之 多态实例2-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

Java 面向对象 之 多态实例2

简介:

http://www.verejava.com/?id=16992846385655

/**
    题目: 孩子吃 水果(苹果,葡萄,芒果,菠萝)

    思路:
        1. 抽象出类 : 孩子(Baby), 水果(Fruit)(苹果(Apple),葡萄(Grape),芒果(Mango))
        2. 找出类的关系: 水果 -> 孩子   (苹果,葡萄,芒果) 是 水果的分类
        3. 找出属性: 孩子(姓名,水果引用)  
        4. 找出方法: 孩子吃(eat)水果

    子类->父类的转换 作用 :解耦 也就是降低类与类之间的耦合度 提供可扩展性
*/
public class Polymorphism3 {
    
    public static void main(String[] args) {
        //实例化一个Baby
        Baby baby = new Baby("李明");

        //实例化一个苹果 和 一个葡萄
        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());

    }
}

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 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);
    }
}

http://www.verejava.com/?id=16992846385655

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章