• java:方法的重载/覆盖、多态


    活动地址:CSDN21天学习挑战赛

    一、方法的重载@override

    1、子类的方法与父类的方法方法名,返回值类型,形参列表都一样,则会发生方法的覆盖。

    注:不一定是直接父类,间接父类也是可以的。

    2、还有一种情况:子类方法的返回值类型和父类方法的返回值类型是父类的子类。譬如String与object。此时也构成

    3、发生重载时子类方法的权限等级不能比父类的小。

    二、多态

    1、为什么要多态?

    同一类型的类的数量较多,对应的功能相同的方法也多了

    例如:给动物喂食,不同的动物要喂不同的食物所以要创建不同的类,根据动物的类型,给动物吃的食物的类型,定义不同的方法,但喂食的逻辑是相同的,方法在功能上发生了重复,但按照当前的技术并不能进行合并,所以要引入多态。         

    2、什么是多态?

    • 多态定义:同一个行为具有多个不同的表现形式或形态的能力
    • 多态类型:多态分为编译时多态性和运行时多态性

    3、方法的多态:

    方法的重载与方法的重写都体现了多态的原则中 的方法的多态。

    4、对象的多态(核心):同一个父类的方法,可以根据实例化子类的不同也有不同的表现

    (1)、对象的编译类型和运行类型可以不同

    (2)、编译类型,定义后不能改变;运行类型可以改变。

    编译类型决定编译过程,运行类型决定运行过程。

    (3)、当对象调用方法时,根据当前的运行类型,决定当前的方法。

    定义一个A类和A类的子类B类C类,则:

    A  a  = new B;

    上式A就是编译类型,B是运行类型

    出现:a = new C;时,与上式不冲突。

    5、多态的细节:

    (1)、多态建立在封装和继承的基础上,正如继承建立在封装之上

    (2)、多态的向上转型:A  a  = new B;其中A是父类,B是子类

    向上转型:

    可以调用父类中的所有成员(需遵守访问权限)。

    不能调用子类中特有成员

    最终运行效果看子类的具体实现!

    (3)向下转型  B b = (B) a;

    向下转型:

    向下转型解决的是向上转型中,不能调用子类中的特有方法的问题。

    向下转型要求父类原先的运行类型就是被转的目标类型,如上式:a原本的引用类型是B,才能转。

    可以调用子类的所有成员

    6、动态绑定机制

    (1)、java的方法有动态绑定机制,当调用方法时,会根据对象的运行类型绑定对象的类。       如:父类的某个方法需要调用一个已经被子类重写的方法时,假如对象运行类型时子类,会调用子类的方法。

    (2)、属性没有动态绑定机制,会直接调用,被调用方法所在的类的同名属性。(没有就会报错)

    7、一个逻辑运算符instanceof

    对象名 instanceof 类名

    判断前者是否是后者或其子类对象

    三、多态的应用:

    1、多态数组:

    多个不同类的对象,可以放进一个最高父类的数组里。利用多态中的向上转型可以实现。

    2、动态传参:

    形参除用父类名。

  • 相关阅读:
    不需要报班学课程,也能制作手办创业的新方法!
    ES7-ES13有何新特性?
    如何利用python提取字符串中的数字
    [附源码]java毕业设计大学生评奖评优系统
    医学图像分割之--Tversky Loss
    Go runtime 调度器精讲(五):调度策略
    SQLite利用事务实现批量插入(提升效率)
    回炉重造,温故知新__css常规布局方法梳理__开发实战后的经验之谈
    【C++笔试强训】第二十八天
    Android 通过Intent打开第三方App
  • 原文地址:https://blog.csdn.net/qq_48843954/article/details/126331122