Java 类方法定义字符串类型,将 int 作为参数并返回 null



现在刚刚进入一些Java。在 OCA 7 书中看到这个扩展类,只是想知道类 Baz 怎么可能使用 go 方法并期望返回类型 String,但参数采用 int。则返回为 null。

Baz是合法的构造还是会返回编译错误?我的意思是它返回字符串类型,但采用 int 参数,然后返回 null。这怎么可能?

public class Foo {
    void go() {}
}
public class Baz extends Foo {
    String go(int x) {
        return null;
    }
}

由于Baz扩展Foo它将继承Foogo()方法。

此外,Baz声明自己的方法称为go(int x),返回类型为 String 。这是两种不同的方法,编译器将它们视为两种方法,因为它们具有不同的签名(= 名称 + 参数类型(。如果唯一的区别是返回类型,那么您会收到编译错误。

由于签名不同,编译器始终可以判断要调用哪个方法 - 在这种情况下,取决于在调用go时是否将int作为参数传递。

这就是为什么Baz是一个完全有效的Java类。

编辑:go(int x)可以返回null String因为这是一个类。当需要对类实例的引用时,您始终可以传递/返回null。(方法参数对于为什么可以做到这一点根本不重要(

最新更新