2. 什么是重载(Overload)和重写(Override) ?

简介: 重载(Overload): 重载是指在同一个类中可以定义多个具有相同名称但参数列表不同的方法。这些方法可以有不同的返回类型、不同的参数类型、不同的参数顺序或不同的参数个数。编译器根据方法的不同参数特征来区分它们,并根据调用时提供的参数类型和个数来确定执行哪个方法。简单来说,重载允许在同一个类中定义多个方法,以便根据不同的参数情况来执行不同的操作。

重载(Overload)和重写(Override)是面向对象编程中的两个重要概念,用于描述不同的方法或函数之间的关系。下面将详细解释它们的含义和用法。

重载(Overload):
重载是指在同一个类中可以定义多个具有相同名称但参数列表不同的方法。这些方法可以有不同的返回类型、不同的参数类型、不同的参数顺序或不同的参数个数。编译器根据方法的不同参数特征来区分它们,并根据调用时提供的参数类型和个数来确定执行哪个方法。简单来说,重载允许在同一个类中定义多个方法,以便根据不同的参数情况来执行不同的操作。

以下是重载的几个特点:
    方法名称相同,但参数列表不同。
    返回类型可以相同也可以不同。
    参数类型、参数顺序或参数个数必须不同。
    重载方法可以在同一个类中定义,也可以在继承关系中的子类中定义。

例如,考虑一个名为"calculate"的类,它包含两个重载方法:

java

public class Calculate {
public int calculate(int a, int b) {
// 执行整数相加操作
}

public double calculate(double a, double b) {
    // 执行浮点数相加操作
}

}

在上面的例子中,根据传递的参数类型(整数或浮点数),编译器将选择适当的重载方法来执行相应的操作。

重写(Override):
重写是指在继承关系中,子类可以重新定义其父类中已经存在的方法。通过重写,子类可以为继承自父类的方法提供自己的实现逻辑。重写只能发生在具有继承关系的类之间,并且被重写的方法必须具有相同的名称、参数列表和返回类型。

以下是重写的几个特点:

方法名称、参数列表和返回类型必须与父类中的方法相同。
子类可以重新定义方法的实现逻辑。
重写方法必须具有相同或更小的访问权限。
重写方法不能比父类方法抛出更多的异常,但可以不抛出异常或抛出较少的异常。

例如,考虑一个名为"Animal"的父类和一个名为"Cat"的子类。"Animal"类定义了一个名为"makeSound"的方法,"Cat"类可以重写这个方法来定义自己的声音:

java

public class Animal {
    public void makeSound() {
        System.out.println("动物发出声音");
    }
}

public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("猫发出喵喵声");
    }
}

在上面的例子中,"Cat"类重写了"Animal"类的"makeSound"方法,提供了自己的实现,在调用"Cat"类的"makeSound"方法时,将打印"猫发出喵喵声"。

总结:
重载和重写是面向对象编程中的两个重要概念。重载允许在同一个类中定义多个具有相同名称但参数列表不同的方法,以便根据不同的参数情况执行不同的操作;重写允许子类重新定义继承自父类的方法,以提供自己的实现逻辑。理解和正确使用重载和重写对于设计灵活且可复用的代码至关重要。

相关文章
|
1月前
|
Java 编译器
重载和重写的区别是什么?
重载和重写的区别是什么?
|
8月前
|
Java 编译器
Java重写(Override)&重载(Overload)
重写(Override)概述 Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的子类,其中 Cat 类继承了 Animal 类。Animal 类中有一个名为 move() 的方法,Cat 类可以对这个方法进行重写。 Animal 类中的 move() 方法不是private 类型,因此它可以被其子类重写。在 Cat 类中,使用相同的名称和参数列表来重新定义了 move() 方法,并且使用 @Overrid
108 0
|
4月前
|
Java
Java重写(Override)与重载(Overload)
Java重写(Override)与重载(Overload)
|
4月前
|
Java 编译器
【JAVA】关于重写(Override)与重载(Overload)
【JAVA】关于重写(Override)与重载(Overload)
48 0
|
7月前
|
Java
Java 重写(Override)与重载(Overload)
Java 重写(Override)与重载(Overload)
|
7月前
|
Java 编译器 程序员
Java 的重载(overload)和重写(override)
重载和重写都是面向对象编程中的概念,但我们或许还听说过一种叫做覆写(overwrite)的概念。C++ 是拥有这个概念的,Java 只有 overload 和 override,Python 只有隐式的 overload 和 override,没有 overwrite 的概念。在重载(overload)、重写(override)和覆写(overwrite)中,我们一般对前面两个比较熟悉,对最后一个会略微陌生一些。
96 1
|
9月前
|
C#
|
Java 编译器
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
194 0
什么是重载、重写,重载和重写的区别是什么?
什么是重载、重写,重载和重写的区别是什么?
87 2
什么是重载、重写,重载和重写的区别是什么?
重载(overLoad)与重写(override)的区别与详解
重载(overLoad)与重写(override)的区别与详解