协变返回类型定义:
在面向对象程序设计中,协变返回类型指的是子类中的成员函数的返回值类型不必严格等同于父类中被重写的成员函数的返回值类型,而可以是更"狭窄"的类型。
public class TestRun {
public static void main(String[] args) {
A a = new A();
B b = new B();
System.out.println(a.instance());//A
System.out.println(b.instance());//B
}
}
class A{
public A instance(){
return new A();
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "A";
}
}
class B extends A{
public B instance(){
return new B();
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "B";
}
// error:
// public C instance(){
// return new C();
// }
}
class C{
}