1. 在方法重写时不能变更声明的返回类型,但可以为声明的返回类型的子类
-
public
class Foo{
-
void go() { }
-
}
-
class Bar extends Foo {
-
String go() {
// 不合法
-
return
;
-
}
-
}
-
Multiple markers at
this line
-
- overrides Foo.go
-
- The
return type
is incompatible with
-
Foo.go()
-
public
class Foo{
-
void go() { }
-
}
-
class Bar extends Foo {
-
String go(int x) {
-
return
;
-
}
-
}
重写的方法声明的返回类型可以为父类方法的子类:
-
public
class Foo{
-
Foo go(){
-
return
new Foo();
-
}
-
}
-
class Bar extends Foo {
-
Bar go() {
-
return
new Bar();
-
}
-
}
-
public
class Foo{
-
Foo go() {
-
return
;
-
}
-
}
-
class Bar extends Foo {
-
Foo go() {
-
return
new Bar();
-
}
-
}
-
abstract
class Foo{
-
abstract Foo go();
-
}
-
class Bar extends Foo {
-
Foo go() {
-
return
new Bar();
-
}
-
}
-
interface runnable{
-
runnable go();
-
}
-
class Bar implements runnable {
-
public runnable go() {
-
return
new Bar();
-
}
-
}
-
abstract
class Foo{
-
abstract void go();
-
}
-
class Bar extends Foo {
-
public void go() {
-
return;
-
}
-
}