方法覆盖diffrent返回类型为void

use*_*206 1 java methods overriding

假设我们有这种方法

 public class Animal {
     public void eat() { }
}
Run Code Online (Sandbox Code Playgroud)

在另一个扩展Animal的类中有这种方法

public String eat(){}
Run Code Online (Sandbox Code Playgroud)

这被认为是方法重写?因为我听说你可以在方法覆盖中使用不同的返回类型,只要它们具有相同的方法参数

NIN*_*OOP 6

这既不是超载,也不是压倒一切!这是编译错误.

在Java中,可以在同一个类中定义两个或多个共享相同名称的方法,只要它们的参数声明不同即可.在这种情况下,这些方法被称为过载,并且该过程称为方法重载.

以下是java 中方法覆盖的规则,在覆盖任何方法时必须遵循这些规则.private,static和final方法不能被覆盖.

1)方法签名必须相同,包括返回类型,方法参数的数量,参数的类型和参数的顺序.

2)覆盖方法不能抛出比原始或重写方法更高的异常.此规则仅适用于Java中已检查的Exception,重写方法可以随意抛出任何未经检查的Exception.

3)覆盖方法不能降低被覆盖方法的可访问性,意味着如果原始方法或重写方法是公共的,则覆盖方法不能使其受到保护.


Tim*_*mmy 5

您只能将返回类型更改为原始返回类型的子类.