写出方法覆盖(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. 子类定义和父类方法名相同、形参列表不同的方法,编译通过,运行也

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


目录
相关文章
|
3月前
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
56 0
|
2月前
|
Java 编译器
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
|
1月前
|
Java
怎么用super调用超类构造函数?
Java 中的 `super` 关键字用于子类引用父类的构造函数和成员。当子类构造函数需要调用父类的构造函数时,`super` 须作为第一条语句,如 `super(param列表);`,这允许子类初始化父类的属性。示例中,`BoxWeight` 类通过 `super(w, h, d)` 调用 `Box` 的构造函数来设置尺寸,而 `BoxWeight` 自己仅设置重量。`super` 也可用于访问被子类隐藏的父类成员,实现封装。
|
Java 编译器
Java重写(Override)&重载(Overload)
重写(Override)概述 Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的子类,其中 Cat 类继承了 Animal 类。Animal 类中有一个名为 move() 的方法,Cat 类可以对这个方法进行重写。 Animal 类中的 move() 方法不是private 类型,因此它可以被其子类重写。在 Cat 类中,使用相同的名称和参数列表来重新定义了 move() 方法,并且使用 @Overrid
138 0
|
3月前
|
Java
Java重写(Override)与重载(Overload)
Java重写(Override)与重载(Overload)
|
3月前
|
Java 编译器
【JAVA】关于重写(Override)与重载(Overload)
【JAVA】关于重写(Override)与重载(Overload)
74 0
|
9月前
|
Java 编译器
【继承顺序和方式,子类构造方法,protected 关键字,final 关键字】
【继承顺序和方式,子类构造方法,protected 关键字,final 关键字】
37 0
|
11月前
|
Java 编译器 程序员
Java 的重载(overload)和重写(override)
重载和重写都是面向对象编程中的概念,但我们或许还听说过一种叫做覆写(overwrite)的概念。C++ 是拥有这个概念的,Java 只有 overload 和 override,Python 只有隐式的 overload 和 override,没有 overwrite 的概念。在重载(overload)、重写(override)和覆写(overwrite)中,我们一般对前面两个比较熟悉,对最后一个会略微陌生一些。
139 1
|
Java 编译器
2. 什么是重载(Overload)和重写(Override) ?
重载(Overload): 重载是指在同一个类中可以定义多个具有相同名称但参数列表不同的方法。这些方法可以有不同的返回类型、不同的参数类型、不同的参数顺序或不同的参数个数。编译器根据方法的不同参数特征来区分它们,并根据调用时提供的参数类型和个数来确定执行哪个方法。简单来说,重载允许在同一个类中定义多个方法,以便根据不同的参数情况来执行不同的操作。
220 0