Java类方法定义字符串类型,将int作为参数并返回null
现在只需要学习一些Java。在OCA 7书中看到这个扩展类,只是想知道为什么类Baz使用go方法并期望返回类型字符串,但参数采用int。然后返回为nullJava类方法定义字符串类型,将int作为参数并返回null,java,types,Java,Types,现在只需要学习一些Java。在OCA 7书中看到这个扩展类,只是想知道为什么类Baz使用go方法并期望返回类型字符串,但参数采用int。然后返回为null Baz是法律解释还是返回编译错误?我的意思是它返回字符串类型,但接受int参数,然后返回null。这怎么可能 public class Foo { void go() {} } public class Baz extends Foo { String go(int x) { return null;
Baz是法律解释还是返回编译错误?我的意思是它返回字符串类型,但接受int参数,然后返回null。这怎么可能
public class Foo {
void go() {}
}
public class Baz extends Foo {
String go(int x) {
return null;
}
}
由于
Baz
扩展了Foo
,它将继承Foo
的go()
方法
另外,Baz
声明了自己的方法,名为go(intx)
,返回类型为String
。这是两种不同的方法,编译器将其视为两种方法,因为它们具有不同的(=名称+参数类型)。如果唯一的区别是返回类型,那么就会出现编译错误
因为签名是不同的,编译器总是可以告诉您要调用哪个方法——在这种情况下,这取决于调用go
时是否将int
作为参数传递
这就是为什么Baz
是一个完全有效的Java类
编辑:
go(int x)
可以返回null
,因为String
是一个类。当需要引用类的实例时,始终可以传递/返回null
。(方法参数对于为什么可能这样做根本不重要)因为Baz
扩展了Foo
它将继承Foo
的go()
方法
另外,Baz
声明了自己的方法,名为go(intx)
,返回类型为String
。这是两种不同的方法,编译器将其视为两种方法,因为它们具有不同的(=名称+参数类型)。如果唯一的区别是返回类型,那么就会出现编译错误
因为签名是不同的,编译器总是可以告诉您要调用哪个方法——在这种情况下,这取决于调用go
时是否将int
作为参数传递
这就是为什么Baz
是一个完全有效的Java类
编辑:
go(int x)
可以返回null
,因为String
是一个类。当需要引用类的实例时,始终可以传递/返回null
。(方法参数对于为什么可能这样做根本不重要)go()
和go(int)
非常重要。不要因为他们的名字相同而感到困惑。他们的签名不一样。@dhke我认为他根本不在乎遗产。他只是感到困惑,当它应该返回一个字符串时,它可以返回null
“Baz是一个合法的构造还是会返回编译错误?”好吧,当你尝试它时发生了什么?这是从书中得到的,我没有使用IDEgo()
和go(int)
都非常有用。不要因为他们的名字相同而感到困惑。他们的签名不一样。@dhke我认为他根本不在乎遗产。他只是感到困惑,当它应该返回一个字符串时,它可以返回null
“Baz是合法的构造还是会返回编译错误?”好吧,当你尝试它时发生了什么?这是从书中得到的,我没有使用IDEyes,它的意思是返回类型字符串,而是接受一个int参数,然后返回null。这怎么可能?@emporio参数与返回类型完全无关。该参数的唯一原因是能够将信息传递到方法中,而不管您如何处理它。是的,因此当end返回null时,这是合法的。是的,它意味着返回类型String,但接受int参数,然后返回null。这怎么可能?@emporio参数与返回类型完全无关。这个参数的唯一原因是能够将信息传递到方法中,而不管您对它做了什么。是的,所以当end返回null时,这是合法的。