美文网首页Java专题Android面试题解析
面试题:Overload 和 Override 的区别(探究解析

面试题:Overload 和 Override 的区别(探究解析

作者: 千夜零一 | 来源:发表于2020-10-12 10:48 被阅读0次

    面试题:Overload 和 Override 的区别,Overloaded 的方法是否可以改变返回值的类型?

    答案:

      方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
      Overloaded 的方法是可以改变返回值的类型。


    探究多态性

      Java中的多态,到底是什么?我们常说的封装,继承和多态,这是面向对象的三大特征。但是具体到多态我们却很是模糊,今天就来借这个问题详细探究一下到底什么事java中的多态。“多态”,顾名思义就是拥有“多种形态”的含义,是指属性或方法在子类中表现为多种形态。


    Tips:我们平时所了解的重写Override与重载Overload都是静态多态。

    多态官方定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

    实现多态的技术:动态绑定(dynamic binding)

    多态存在的三个必要条件
    一、要有继承;
    二、要有重写;
    三、父类引用指向子类对象。

    自我解读
    多态是同一个行为具有多个不同表现形式或形态的能力。
    多态就是同一个接口,使用不同的实例而执行不同操作。

    现实中,比如我们按下 F1 键这个动作:

    如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
    如果当前在 Word 下弹出的就是 Word 帮助;
    在 Windows 下弹出的就是 Windows 帮助和支持。

    同一个事件发生在不同的对象上会产生不同的结果。(多态的含义)


    编译时多态和运行时多态(面试加分项)

      根据何时确定执行多态方法中的哪一个,多态分为两种情况:编译时多态和运行时多态。如果在编译时能够确定执行多态方法中的哪一个,称为编译时多态,否则称为运行时多态。
    方法重载(Overload)都是编译时多态。根据实际参数的数据类型、个数和次序,Java在编译时能够确定执行重载方法中的哪一个。
    方法重写(Override)表现出两种多态性,当对象引用本类实例时,为编译时多态,否则为运行时多态。


    多态的好处

    1.可替换性(substitutability)
      多态对已存在代码具有可替换性。例如,draw函数对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
    2.可扩充性(extensibility)
      多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
    3.接口性(interface-ability)
      多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
    4.灵活性(flexibility)
      它在应用中体现了灵活多样的操作,提高了使用效率。
    5.简化性(simplicity)
      多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。


    重写与重载之间的区别(代码图示)



    总结

    重载和重写的区别.png

      方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

    (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。

    (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。

    (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

    相关文章

      网友评论

        本文标题:面试题:Overload 和 Override 的区别(探究解析

        本文链接:https://www.haomeiwen.com/subject/fmjupktx.html