Java 中重载 (Overload) 和重写 (Override) 的区别是什么?

· 约 2 分钟读完 · 第 3 / 274 章

推荐答案

在Java中,重载(Overload)和重写(Override)是两种不同的方法处理机制,它们的主要区别如下:

  • 重载(Overload):发生在同一个类中,方法名相同但参数列表不同(参数类型、数量或顺序不同)。重载与返回类型无关,可以有不同的返回类型。
  • 重写(Override):发生在子类中,子类重新定义父类中已有的方法,方法名、参数列表和返回类型必须完全相同。重写方法不能比被重写方法有更严格的访问权限。

本题详细解读

重载(Overload)

重载是指在同一个类中定义多个方法,它们具有相同的名称但参数列表不同。重载方法可以有不同的返回类型,但仅返回类型不同不足以构成重载。重载的目的是为了提供多种处理不同数据类型或数量的方式。

示例:

在这个例子中,display方法被重载了,因为它有两个版本,一个接受int类型参数,另一个接受String类型参数。

重写(Override)

重写是指子类重新定义父类中已有的方法。重写的方法必须具有相同的方法名、参数列表和返回类型。重写方法不能比被重写方法有更严格的访问权限(例如,不能将public方法重写为private)。

示例:

在这个例子中,Dog类重写了Animal类中的sound方法。当调用Dog对象的sound方法时,将执行Dog类中的版本,而不是Animal类中的版本。

总结

  • 重载:同一个类中,方法名相同,参数列表不同。
  • 重写:子类中重新定义父类的方法,方法名、参数列表和返回类型必须相同。