• java多态


    1.什么是多态

    执行同一方法因为对象或实例不同而产生不同的结果,这就是多态

    例如:

    同样是打印一份文档,因为使用不同的打印机而得到不同的打印结果,

    在程序中我们把打印看作是方法,不同的打印机看成是不同的对象,得到不同的结果,称之为多态。

    多态的特点:同一引用类型,同样的方法在不同实例上得到不同的执行结果。

    同一引用类型:一般指父类

    不同:不同的实例(对象),同一方法有不同的结果

    【1】编写父类

    【2】编写子类,子类一定要重写/实现父类的方法

    【3】运行时,父类类型 引用 子类对象

    2.多态的实现形式

    【1】父类类型 引用 子类对象(本质)

    1 Father father = null;
    2         father = new Sun("王多魚", "男");
    3         father.dream("去当兵");

    father = new Sun() 父类类型引用子类对象,当调用dream方法时,执行的是子类对象重写/实现dream方法。(父类没有实现的方法,其通过子类实现了,称之为方法的实现)

    【2】父类作为方法中的参数

    【3】父类作为方法的放回值

    3.类型转换

    多态中存在两种类型转换,一种是自动类型转换,一种是强制类型转换 在引用数据  转换过程中,

    自动类型转换也称向上类型转换。子类可以自动转换成父类。(子转父自动 老爸管儿子)

    1 Pet pet = null;
    2 pet = new Dog(); //把子类对象赋给父类

    强制类型转换也称下类型转换父类可以强制转换成子类。(父转子强制 儿子管父亲)

    子类类型 引用 = (子类)父类对象

    单一般来说还需要判断父类对象的真实性,instanceof关键字来判断

    如果要调用子类特有的方法,一定要强制类型转换,通过instanceof鉴别具体类型

    obj instanceof 类/接口   判断obj是否是类/接口的实例
    public void play(Pet pet) {
            if(pet instanceof Dog) {
                Dog dog = (Dog) pet;
                dog.catchFlyDisc();
            }else if(pet instanceof Penguin) {
                Penguin penguin = (Penguin) pet;
                penguin.swimming();
            }
        }
  • 相关阅读:
    壁纸网站收藏
    LaTeX公式学习
    最简单的音乐播放器,实现播放器基本功能
    计算机视觉领域的牛人博客、研究机构、博客
    视频压缩编码和音频压缩编码的基本原理
    MPEG-4 压缩编码标准
    视频编码标准简介
    视频压缩编码的基本原理
    数字视频原理
    视频压缩编码综述
  • 原文地址:https://www.cnblogs.com/ruckly/p/10759560.html
Copyright © 2020-2023  润新知