暂时进入Java。在OCA 7书中看到了这个扩展类,只是想知道Baz类如何使用go方法并期望返回类型String,但参数采用int。然后返回null。
Baz是合法的构造还是会返回编译错误?我的意思是它返回String类型,但接受一个int参数然后返回null。怎么可能?
gulp.src
答案 0 :(得分:2)
自Baz
扩展Foo
以来,它将继承Foo
的{{1}}方法。
此外,go()
声明了自己的名为Baz
的方法,其返回类型为go(int x)
。这是两种不同的方法,编译器将它们视为这样,因为它们具有不同的signature(=名称+参数类型)。如果唯一的区别是返回类型,那么你会得到一个编译错误。
由于签名不同,编译器总是可以告诉您要调用哪种方法 - 在这种情况下,取决于在调用String
时是否将int
作为参数传递。
这就是go
是一个完全有效的Java类的原因。
修改:Baz
可以返回go(int x)
,因为null
是一个类。当期望引用类的实例时,您总是可以传递/返回String
。 (方法参数对于为什么这是可能的并不重要)