面向对象之多态

class Pet
{
    private String name;
    Pet(String name)
    {
        this.name = name;
    }
    void enjoy()
    {
        System.out.println("宠物的叫声");
    }
}
class Dog extends Pet
{
    private String furColor;
    Dog(String name,String furColor)
    {
        super(name);
        this.furColor = furColor;
    }
    void enjoy()
    {
        System.out.println("狗叫声");
    }
}
/*class Cat extends Pet
{
    private String eyeColor;
    Cat(String name,String eyeColor)
    {
        super(name);
        this.eyeColor = eyeColor;
    }
    void enjoy()
    {
        System.out.println("猫叫声");
    }
}*/
class Bird extends Pet
{
    private String wingColor;
    Bird(String name,String wingColor)
    {
        super(name);
        this.wingColor = wingColor;
    }
    void enjoy()
    {
        System.out.println("鸟叫声");
    }
}
class Lady
{
    private String name;
    private Pet p;
    Lady(String name,Pet p)
    {
        this.name = name;
        this.p = p;
    }
    void myPetEnjoy()
    {
        p.enjoy();
    }
    
}
public class TestPoly
{
    public static void main(String[] args)
    {
        Cat c = new Cat("Cat1","blue");
        Dog d = new Dog("Dog1","yellow");
        //Bird b = new Bird("Bird1","red");
        Lady l = new Lady("l1",c);
        //l = new Lady("l2",b);
        l.myPetEnjoy();
    }
}
/*
1.在EditPlus中按下ctr+D会添加当前的日期
2.用到了多态
Lady(String name,Pet p)
    {
        this.name = name;
        this.p = p;
    }
    void myPetEnjoy()
    {
        p.enjoy();
    }
多态的条件:
1)存在继承
2)父类引用指向子类对象
3)子类重写父类方法
他比那个转型多了一个重写父类方法
3.多态将程序的扩展性发挥到了极致
例如:程序可以添加很多的Pet子类(像Bird类等),而别的地方,完全不用修改代码
他是在运行期间动态的绑定对象的,而不是编译期间
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值