一尘不染

为什么在Java中需要方法重载和重写?

java

我正在努力了解为什么在Java中 需要方法重载和重写

我已经阅读了一些与此相关的文章,但无法理解为什么实际上需要它?

我还访问了以下url,但在该主题中我还不清楚。

Java重载和覆盖

任何实际的例子将不胜感激。

提前致谢。


阅读 759

收藏
2020-09-08

共1个答案

一尘不染

来自doc的
方法重载:
假设您有一个可以使用书法绘制各种类型的数据(字符串,整数等)的类,并且包含一个用于绘制每种数据类型的方法。为每个方法使用新名称很麻烦,例如drawString,drawInteger,drawFloat等。在Java编程语言中,您可以对所有绘图方法使用相同的名称,但可以将不同的参数列表传递给每个方法。因此,数据绘图类可能会声明四个名为draw的方法,每个方法都有一个不同的参数列表。

public class DataArtist {
    ...
    public void draw(String s) {
        ...
    }
    public void draw(int i) {
        ...
    }
    public void draw(double f) {
        ...
    }
    public void draw(int i, double f) {
        ...
    }
}

重载的方法通过传递给方法的参数的数量和类型来区分。在代码示例,draw(String s)并且draw(int i)是不同的和独特的方法,因为它们需要不同的参数类型。

您不能声明多个具有相同名称,相同数量和类型的参数的方法,因为编译器无法区分它们。

区分方法时,编译器不会考虑返回类型,因此即使两个方法具有不同的返回类型,也无法声明具有相同签名的两个方法。

*在面向对象程序设计中, *方法重写
是一种语言功能,它允许子类或子类提供其超类或父类之一已经提供的方法的特定实现。子类中的实现通过提供与父类中的方法具有相同名称,相同参数或签名以及相同返回类型的方法来覆盖(替换)超类中的实现。执行方法的版本将由用于调用该方法的对象确定。如果使用父类的对象来调用该方法,则将执行父类中的版本,但是如果使用子类的对象来调用该方法,则将执行子类中的版本。

2020-09-08