Java多态

多态:JAVA中的多态即同种行为有多种不同表现形态。通俗一点来说就是使用同一个接口,使用不同的实例而执行不同的操纵。
在这里插入图片描述
多态意义何在

  1. 消除类型之间的耦合关系
  2. 可扩充性
  3. 灵活性
  4. 接口性

通俗一点:既可以使用子类强大的功能,又可以抽取父类的共性。

多态存在的必要条件:

  1. 存在继承
  2. 存在重写
  3. 向上转型(父类引用指向子类对象)*重点理解,这是多态的关键

上代码

package java_demo.多态;

public class Duot {
    public static void main(String args[])
    {
        Animal a = new Dog(); //父类引用指向子类Dog对象
        System.out.println(a.s); //父类引用调用自身属性
        a.eat(); //子类如果重写了父类的可重写方法(非private、非 final 方法),那么这个对象调用该方法时默认调用的时子类重写的方法,而不是父类的方法;
        Dog c = (Dog)a;//向下转型,调用子类有而父类没有的方法
        c.work();
        Animal b = new Cat();
        b.eat();
        Cat d = (Cat) b;
        d.work();
    }
}
class Animal
{
    public String s = "这是我的的秘密!";
    public void eat()
    {
        System.out.print("我是动物,我吃饭!");
    }
}
class Dog extends Animal //子类Dog
{
    public void eat()
    {
        System.out.println("我是狗,我吃狗头!");
    }
    public void work()
    {
        System.out.println("我是狗,我会守家!");
    }
}
class Cat extends Animal //子类Cat
{
    public void eat()
    {
        System.out.println("我是猫,我吃鱼!");
    }
    public void work()
    {
        System.out.println("我是狗,我会抓老鼠!");
    }

}

结果
在这里插入图片描述

分析

  1. 父类引用指向子类对象,对象调用的方法如果已经被子类重写过了则调用的是子类中重写的方法,而不是父类中的方法;
  2. 父类引用需要调用子类有而父类没有的方法时,需要向下转型。不然编译会出错。
  3. 可以说向上转型或者是多态都是通过动态绑定来实现的,如果对多态不理解的可以查看我的另外一篇文章(动态绑定)

我一直认为有的知识点说得太高深反而不容易理解,所以我写的每一篇博客都是以一种很通俗的讲法去让大家能够理解,有什么不懂得地方或者在Java或者Python上遇到不懂得地方都可以直接私信我来和大家一起共同解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值