继承与多态的简单代码实现

文章通过创建一个动物类Animal作为父类,然后建立老虎和狗的子类,重写eat方法,展示了Java中的继承和多态特性。动物园管理员Zookeeper喂食时,调用父类方法,但实际执行的是子类的重写版本,体现了多态的动态绑定特性。

继承与多态的简单代码实现

首先继承由父类和子类组成,我们就以一个动物园管理员喂动物的事例来实现

动物父类

首先需要一个动物的父类来写一个动物吃的方法

public class Animal {
    public void eat(){
        System.out.println("动物吃食物!");
    }
}

然后动物园里会有各种各样的动物

动物子类

比如有老虎,老虎需要吃肉,我们需要重写Animal的eat方法,这时我们需要使用@override

public class Tiger extends Animal{
    @Override
    public void eat(){
        System.out.println("老虎吃肉!");
    }
}

然后再来一个鬣狗(狗),同理Tiger类

public class Dog extends Animal{
    @Override
    public void eat(){
        System.out.println("小狗吃骨头!");
    }
}

动物管理员

我们需要一个动物管理员来实现一个“喂”的动作,这里调用Animal的eat方法(在运行过程中不会运行Animal的eat,因为在子类中eat被重写了)

public class Zookeeper {
    public void feed(Animal animal){
        animal.eat();
    }
}

动物园系统

这时就可以实现在动物园里“喂”动物的操作啦!

public class Zoo {
    public static void main(String []arge){
        Zookeeper zk=new Zookeeper();
        Animal animal1 = new Tiger();
        zk.feed(animal1);
        Animal animal2 = new Dog();
        zk.feed(animal2);
    }
}

运行结果:

老虎吃肉!
小狗吃骨头!

这时有人要问了,为什么父类Animal的eat方法没有被调用?

这因为在运行feed()方法时animal.eat()中的eat方法最终调用的是子类重新的版本,这就是多态的效果。

多态的效果

  1. 对于指向子类的对象的父类来说,在编译期间只调用父类方法,不能直接调用子类的方法。
  2. 对于父子类都有的非静态方法来说,指向子类的父类对象最终调用子类的重写版本
  3. 对于父子类都有的静态方法来说,指向子类的父类对象最终调用父类中的版本,与指向对象无关。
  4. 多态可以屏蔽不同子类的差异性而编写通用代码,从而产生不同的效果
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值