写出方法覆盖(override)和方法重载(overload)区别

简介: 写出方法覆盖(override)和方法重载(overload)区别

面试题目:写出方法覆盖(override)和方法重载(overload)区别。


方法的重载:overload


a. 方法重载:在一个类中定义多个同名方法,但是形参列表不同。

b. 方法重载的要求:

I. 方法名相同

II. 形参列表不同(个数、顺序、类型)

III. 修饰符、返回值类型、异常没有要求

注意:只是形参名字不同不能构成方法的重载

public void m1(int n){}

public void m1(int i){}// 重复,不允许

c. 使用:在调用时 对象名.方法名(实参);

自动根据给定的实参匹配对应形参方法

d. 注意:根据实参匹配对应形参时,先精确匹配,精确匹配不成功,再就近

向上匹配,如果就近向上匹配不成功,则编译报错;注意避免陪陪

混淆现象

public void m1(int i,double d){}

public void m1(double d,int i){}

// 如果 mc.m1(10,10);匹配混淆

e. 好处:可以屏蔽因参数不同而导致方法实现不同及名字不同的差异;

方便外界调用

f. 应用场景:一种功能方法因形参带来的实现不同时,避免名字太多而造成调用繁琐



方法的覆盖(override)(方法的重写)


(1) 概念:子类中定义和父类中相同的方法。

(2) 方法覆盖的要求:

a. 子类的方法名、返回值类型、形参列表和父类相同

b. 子类的方法访问修饰符和父类相同或是比父类更宽

(3) 使用:子类对象名.方法名(实参);// 优先使用子类覆盖后的方法

(4) 注意:

a. 子类定义类和父类方法名相同、形参列表相同,但是返回值不同,编译

报错

b. 子类定义和父类方法名相同、形参列表不同的方法,编译通过,运行也

通过,但是此应用为特殊的方法重载


目录
相关文章
|
2天前
|
Java
被final修饰的类的所有方法都不能被重写吗
在Java中,被`final`修饰的类不能被继承,因此其所有方法也不能被重写。`final`关键字确保了类的定义和行为不会被子类改变。
|
6月前
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
105 0
|
2月前
|
Java 编译器 数据安全/隐私保护
Java 重写(Override)与重载(Overload)详解
在 Java 中,重写(Override)和重载(Overload)是两个容易混淆但功能和实现方式明显不同的重要概念。重写是在子类中重新定义父类已有的方法,实现多态;重载是在同一类中定义多个同名但参数不同的方法,提供多种调用方式。重写要求方法签名相同且返回类型一致或为父类子类关系,而重载则关注方法参数的差异。理解两者的区别有助于更好地设计类和方法。
|
5月前
|
Java 编译器
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
|
Java 编译器
Java重写(Override)&重载(Overload)
重写(Override)概述 Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的子类,其中 Cat 类继承了 Animal 类。Animal 类中有一个名为 move() 的方法,Cat 类可以对这个方法进行重写。 Animal 类中的 move() 方法不是private 类型,因此它可以被其子类重写。在 Cat 类中,使用相同的名称和参数列表来重新定义了 move() 方法,并且使用 @Overrid
166 0
|
6月前
|
Java
Java重写(Override)与重载(Overload)
Java重写(Override)与重载(Overload)
|
6月前
|
Java 编译器
【JAVA】关于重写(Override)与重载(Overload)
【JAVA】关于重写(Override)与重载(Overload)
109 0
|
Java 编译器 程序员
Java 的重载(overload)和重写(override)
重载和重写都是面向对象编程中的概念,但我们或许还听说过一种叫做覆写(overwrite)的概念。C++ 是拥有这个概念的,Java 只有 overload 和 override,Python 只有隐式的 overload 和 override,没有 overwrite 的概念。在重载(overload)、重写(override)和覆写(overwrite)中,我们一般对前面两个比较熟悉,对最后一个会略微陌生一些。
188 1
|
Java 编译器
2. 什么是重载(Overload)和重写(Override) ?
重载(Overload): 重载是指在同一个类中可以定义多个具有相同名称但参数列表不同的方法。这些方法可以有不同的返回类型、不同的参数类型、不同的参数顺序或不同的参数个数。编译器根据方法的不同参数特征来区分它们,并根据调用时提供的参数类型和个数来确定执行哪个方法。简单来说,重载允许在同一个类中定义多个方法,以便根据不同的参数情况来执行不同的操作。
287 0