首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java -当继承、多态性、重载和重写都涉及到时,调用哪个函数?

当继承、多态性、重载和重写都涉及到时,调用的函数取决于对象的实际类型和编译时的类型。

  1. 继承:当一个类继承另一个类时,子类会继承父类的方法。如果子类没有重写父类的方法,那么调用该方法时会执行父类的方法。
  2. 多态性:多态性是指同一个方法可以在不同的对象上产生不同的行为。当一个父类引用指向一个子类对象时,通过该引用调用的方法可能是子类中重写的方法。
  3. 重载:重载是指在同一个类中定义多个同名但参数列表不同的方法。调用重载方法时,编译器会根据传入的参数类型和数量来确定调用哪个方法。
  4. 重写:重写是指子类重新定义父类中已有的方法。当子类重写了父类的方法后,通过子类对象调用该方法时会执行子类中的方法。

综上所述,当继承、多态性、重载和重写都涉及到时,调用的函数取决于对象的实际类型和编译时的类型。如果子类重写了父类的方法,那么通过子类对象调用该方法时会执行子类中的方法。如果子类没有重写父类的方法,那么调用该方法时会执行父类的方法。对于重载的方法,编译器会根据传入的参数类型和数量来确定调用哪个方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2019Java面试宝典 -- JavaSE基础篇

3) 多态性多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性运行时的多态性。...方法的重载重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。...因为调用时不能指定类型信息,编译器不知道你要调用哪个函数。...例如: 1.float max(int a, int b); 2.int max(int a, int b); 调用 max(1, 2);时无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的...函数的返回值只是作为函数运行之后的一个“状态”,他是保持方法的调用者与被调用者进行通信的关键。并不能作为某个方法的“标识”。 本系列Java面试题很多代码来自网络,后加上作者的修改。

2.1K20

【面试虐菜】—— JAVA面试题(1)

(3).多态性多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性包含多态性多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2. ...调用方法时通过传递给它们的不同参数个数参数类型来决定具体使用哪个方法, 这就是多态性。         (3)重载的时候,方法名要一样,但是参数类型个数不一样,返回值类型可以相同也可以不相同。...无法以返回型别作为重载函数的区分标准。 重写(Override):       (1)  父类与子类之间的多态性,对父类的函数进行重新定义。...(3)子类函数的访问修饰权限不能少于父类的 重写方法的规则: 1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载...而重载的规则: 1.必须具有不同的参数列表; 2.可以有不同的返回类型,只要参数列表不同就可以了; 3.可以有不同的访问修饰符; 4.可以抛出不同的异常; 重写重载的区别在于: 重写多态性起作用

78890
  • 深入理解Java多态:灵活性与可扩展性的完美结合

    多态的主要目的是提高代码的可扩展性可维护性。 在Java中,多态主要通过以下两种方式实现: 方法重载(Overloading) 方法重写(Overriding) 1....方法重载 方法重载是指在同一个类中,有多个方法名称相同,但参数列表不同的方法。方法重载是一种静态多态,即在编译时就确定了具体调用哪个方法。...这些方法在编译时就已经确定了具体的调用。 2. 方法重写 方法重写是指子类重新定义父类中的方法。方法重写是一种动态多态,即在运行时确定具体调用哪个方法。...通过继承,子类可以重用父类的代码,并可以对父类的方法进行重写,从而实现多态性。 2. 封装 封装是指将数据行为封装在对象中,并通过公开的方法访问修改数据。...在Java中,多态主要通过方法重载方法重写实现,并可以通过继承、接口抽象类来实现。多态在实际编程中有广泛的应用,例如设计模式、数据结构集合、GUI编程等。

    24710

    八股文-如何理解Java中的多态

    主要包括两种类型:编译时多态(静态多态)运行时多态(动态多态)。 编译时多态(静态多态) 主要体现在方法的重载重写。...方法的重载是在同一个类中,允许定义多个同名方法,但参数列表不同;方法的重写发生在继承关系中,子类可以覆盖父类的方法。 运行时多态(动态多态) 主要通过对象的多态性动态绑定实现。...必要条件: 继承或者实现接口 子类重写父类的方法 父类的引用指向子类的对象 多态的实现原理 多态的实现原理涉及到动态绑定虚拟方法调用。这两个概念有助于理解在运行时如何实现多态性。...集合中的多态 Java中的集合类(如List、Map)经常使用多态性,允许存储不同类型的对象,使得代码更加通用灵活。 框架设计模式 多态性是许多设计模式(如策略模式、工厂模式)框架的基础。...编译时多态主要在编译阶段确定调用哪个方法,而运行时多态则在运行时确定调用哪个方法。这种灵活性使得程序能够更容易地适应变化,同时提高了代码的可扩展性。

    17410

    Java面试葵花宝典打印版【1】

    4.多态性多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性包含多态性多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。...java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。...14、OverloadOverride的区别。 Overloaded的方法是否可以改变返回值的类型?方法的重写Overriding重载Overloading是Java多态性的不同表现。...重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。...如果在子类中定义某方法与其父类有相同的名称参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

    25030

    继承、接口与多态的相关问题

    子类不能继承父类中访问权限为private的成员变量方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。...4、 什么是重载?什么是重写重载: a方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。...b Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数不同的定义。调用方法时通过传递给它们的不同参数个数参数类型来决定具体使用哪个方法, 这就是多态性。...c重载的时候,方法名要一样,但是参数类型个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。 重写: a父类与子类之间的多态性,对父类的函数进行重新定义。...如果在子类中定义某方法与其父类有相同的名称参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。

    1.4K20

    2020Java面试宝典 -- JavaSE基础篇

    方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。...方法的重载重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。...因为调用时不能指定类型信息,编译器不知道你要调用哪个函数。...例如: 1.float max(int a, int b); 2.int max(int a, int b); 调用 max(1, 2);时无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的...y.equals(z)返回 true 时,x.equals(z)也必须返回 true)一致性(x y 引用的对象信息没有被修改时,多次调用 x.equals(y)应该得到同样的返回值

    95530

    Java---常用基础面试知识点

    4、多态性 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性包含多态性多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。...doXXX方法(doGet,doPost)等,服务器决定将实例销毁的时候调用其destroy方法。...14、OverloadOverride的区别 方法的重写Override重载Overload是Java多态性的不同表现。...重写Overrid是父类与子类之间多态性的一种表现,重载 Overload是一个类中多态性的一种表现。 如果在子类中定义某方法与其父类有相同的名称参数,我们说该方法被重写 (Overrid)。...16、Java中的异常处理机制的简单原理应用 JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。

    40130

    实现类的多态性,方法的重写重载

    1.多态性是面向对象程序设计的重要部分。在Java语言中,通过使用方法的重载重写实现类的多态性。...2.重写(覆盖)是指父子类之间的关系,子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,那么子类就不能继承父类的方法,这时,称为子类的方法重写了父类的方法。...从上面的例子可以知道,Dog类Cat类重写了父类的eat()方法,所以执行的是子类的eat()方法,但是Tiger类没有重写父类的方法,所以执行的是父类中的eat()方法。...3.方法的重载是指在一个类中出现多个方法名相同,但参数个数或参数类型不同的方法,则称为方法的重载Java语言在执行该具有重载关系的方法时,将根据调用参数的个数类型区分具体执行的是哪个方法。...4.以上就是通过方法的重写重载实现类的多态性,仅供大家学习参考。

    71240

    C++多态与虚函数

    概念 1.1 多态 不同类的对象对相同的方法或函数产生有不同的反应。多态的实现依赖于虚函数 静态多态动态多态 静态多态(编译时多态) 这是通过方法重载实现的一种多态性形式。...在编译时,编译器确定使用哪个方法。重载方法的选择发生在编译阶段,因此它是静态的,编译器会确定调用哪个方法。 动态多态(运行时多态) 这是通过方法重写继承实现的一种多态性形式。...2.2 析构函数可以为虚函数使用多态特性,让基类指针指向派生类对象时,如果析构函数不是虚函数,通过基类指针销毁派生类对象时,会调用静态绑定的析构函数,也就是基类的析构函数,从而只能销毁属于基类的元素...2.4 函数重载重写区别 范围区别:重写重写函数在不同的类中,重载重载函数在同一类中。...virtual的区别:重写的基类函数必须要有virtual修饰,重载函数重载函数可以被virtual修饰,也可以没有 2.5 C++多态示例 #include using namespace

    15210

    【JavaSE学习】 Day5JavaSE面向对象(中)看这三篇就够了

    或 overwrite) 应用 举例 重写的规则 方法的重写重载的区别 三、super关键字 super调用属性、方法 super调用构造器 四、子类对象实例化全过程 继承性 从过程上看 强调说明...(具体放到异常处理时候讲) 子类父类中的同名同参数的方法要么声明为非static的(考虑重写,要么声明为static的(不是重写)。    ...方法的重写重载的区别 ① 二者的概念。 ② 重载重写的具体规则 ③ 重载:不表现为多态性。 重写:表现为多态性重载,是指允许存在多个同名方法,而这些方法的参数不同。...它们的调用地址在编译期就绑定了。Java重载是可以包括父类子类的,即子类可以重载父类的同名不同参数的方法。...总结 本次文章讲述了面向对象的继承性、继承性的好处、Java继承的说明、Java方法的重写重写的规则、重写重载的区别、super关键字调用属性、方法、构造器、子类对象实例化过程(附图)、面向对象多态性

    64820

    Java 小白成长记 · 第 7 篇「区分重载重写,轻松掌握 Java 多态」

    前言 陆续讲完了抽象、封装继承,终于到多态了,说实话这四个概念的耦合性比较高,明明每个概念都很清晰明了,但是拆分开来就确实不太好写,每篇写之前需要构思很久。...这里需要注意的是,使用多态方式调用方法时,编译器会首先检查父类中是否有该方法,如果没有,则编译错误;如果父类中有该方法,并且被子类重写,就会调用子类的这个方法;如果父类的方法没有被子类重写,就会调用父类的方法...重载重写 重载重写在之前的文章中都说过了,此处正好借着多态这个主题将这两个容易混淆的概念总结一波。...方法的「重写 Overriding」 重载 Overloading」 都是是 Java 多态性的表现。 ? 1)「方法重写是父类与子类之间多态性的表现」。...但是,「如果是作为程序的入口,那么 main 函数只有一种写法,Java 虚拟机在运行的时候只会调用带有参数是 String 数组的那个 main() 方法」,而其他重载的写法虚拟机是不认的,只能人为的调用

    56811

    【小家java】关于java中方法重载与方法重写的区别

    ---- 1、概述 这篇文章比较轻松,直接讲述一下java当中的方法重载方法重写的区别。主要面向对象还是初学者,因为初学者经常弄混这两个概念性的问题。...2、栗子 一、重载 overloading,这个在JDK里可没有相关注解哦 方法重载是让类以统一的方式处理不同类型数据的一种手段。重载是一个类中多态性的一种表现。...Java的方法重载,就是可以在类里定义多个同名的方法,但具有不同的参数不同的定义(不同的参数列表)。调用方法时才决定最终调用哪个方法,这也是多态性的表现。...重载的返回值类型可以相同也可以不同 二、重写overriding。强烈建议如果是重写,请加上方法注解:@Override 父类(接口)与子类之间的多态性,对父类的函数进行重新定义。...3、使用场景 处处都有 4、最后 若方法类型为priavte static final ,java采用静态编译,编译器会准确知道该调用哪个方法。

    80020

    Java学习历程之----提升篇(五)

    其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。μ = 0,σ = 1时的正态分布是标准正态分布。...其概率密度函数及期望方差如下图所示: 前言 本周我们继续来学习Java三大特性之多态性,至此,Java三大特性我们也算是大概了解了一遍,后面我们将在这三大特性的基础之上提高我们的编程能力。...而运行时多态是动态的,它是通过动态绑定来实现的,也就是大家通常所说的多态性。 二、Java实现多态的三个必要条件 Java 实现多态有 3 个必要条件:继承重写向上转型。...3.向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。那下面我们通过一个具体的例子来看看如何实现Java类的多态性吧。...小编有话说 这周我们就来回顾一下方法的重载重写吧,还有多态也一起实现,方便大家理解他们之间的差别,下面是习题时间 方法的重载:创建一个Overloading类,定义sum()方法并进行方法的重载(即从参数的类型的数量改变

    26210

    必知必会之C++多态机制

    一个基类的成员函数被声明为虚函数时,派生类可以通过覆盖(重写)这个函数来提供自己的实现。在运行时,调用这个虚函数的时候,实际上调用的是指向对象的实际类型的版本。...静态多态(编译时多态): 主要是通过函数重载模板实现的,例如,同一个函数名可以有多个版本,根据参数的类型和数量来决定调用哪个版本的函数。这种多态性在编译时就已经确定了。...动态多态(运行时多态): 主要是通过虚函数继承实现的,例如,基类指针指向派生类对象,并调用函数。在运行时,根据对象的实际类型来决定调用哪个版本的函数。这种多态性在运行时才会确定。...动态多态性通过虚函数继承来实现,在编译时无法确定函数调用的具体版本,而是在运行时根据对象的类型动态确定。...派生类重写函数: 派生类中可以通过重写(覆盖)基类中的虚函数来提供自己的实现。在调用这个虚函数时,会根据对象的实际类型来决定调用哪个版本的函数

    12910

    Java 基础概念·Java 继承

    重写就是子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法。 重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理。...重写遵循所谓“运行期绑定”,即在运行的时候,根据引用变量所指向的实际对象的类型来调用方法 重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应该调用哪个方法。...方法的重写(Overriding)重载(Overloading)是 java 多态性的不同表现(有争议),重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。...上面提到的那种动态绑定认为是动态多态,因为只有在运行期才能知道真正调用的是哪个类的方法。还有一种静态多态,一般认为 Java 中的函数重载是一种静态多态,因为他需要在编译期决定具体调用哪个方法。...一般认为,多态应该是一种运行期特性,Java 中的重写是多态的体现,而重载多态其实是无关的。

    49040

    JAVA 什么是多态?

    (发送消息就是函数调用)。...通俗一点的说法:所谓多态就是指程序中定义的引用变量所指向的具体类型通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法...子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。 要想调用父类中被重写的方法,则必须使用关键字 super。...java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。 方式三:抽象类抽象方法 需要注意的问题 一是子类与父类的关系,二是重载方法的调用问题。...注意把子类对象当成父类对象使用时,子类对象将失去所有的子类特 性,只保留与父类同名的属性方法(同名方法不仅是函数名相同,而且参数类型也要一样,否则不予保留)。

    88630

    八股文-方法的重载重写

    Java 中,重载重写是两个关键的面向对象编程概念。重载通过方法的参数列表不同来区分同名方法,提供了更灵活的方法调用方式。...重写的方法与父类中的方法具有相同的名称、返回类型参数列表。在运行时,会根据对象的实际类型调用相应的子类方法,体现了多态性的概念。...; } } 在上述例子中,Dog Cat 类分别重写了 call 方法。通过父类引用调用这个方法时,实际上会根据对象的实际类型调用相应的子类方法。...解析时机(编译时与运行时) 重载是在编译时确定调用哪个方法,而重写是在运行时动态绑定,根据对象的实际类型调用相应的方法。...总结 重载重写Java 中实现多态性的两种方式,它们分别通过方法的参数列表方法的重写来实现。这两个概念为 Java 提供了更高层次的灵活性可扩展性,使得代码更易于理解维护。

    17510

    JavaSE面试深度剖析 第二讲

    y.equals(z)返回 true 时,x.equals(z)也必须返回 true)一致性(x y 引用的对象信息没有被修改时,多次调用 x.equals(y)应该得到同样的返回值),而且对于任何非...重载(overload)重写(override)的区别?重载的方法能否根据返回类型进行区分? 方法的重载重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。...但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。 为什么函数不能根据返回类型来区分重载? 该道题来自华为面试题。...因为调用时不能指定类型信息,编译器不知道你要调用哪个函数。...例如: float max(int a, int b); int max(int a, int b); 调用 max(1, 2);时无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的

    51210
    领券