协变返回类型:子类覆写了父类的一个方法,子类中方法的返回值类型可以是父类方法返回值类型的子类。
示例代码(Java编程思想)如下所示:子类WheatMill覆写了父类Mill的process方法,子类proces方法的返回值Wheat是父类proces方法返回值Grain的子类。
public class CovariantReturn {
public static void main(String[] args) {
Mill m = new Mill();
Grain g = m.process();
System.out.println(g);
m = new WheatMill();
g = m.process();
System.out.println(g);
}
}
class Grain{
@Override
public String toString() {
return "Grain";
}
}
class Wheat extends Grain{
@Override
public String toString() {
return "Wheat";
}
}
class Mill{
Grain process(){
return new Grain();
}
}
class WheatMill extends Mill{
Wheat process(){
return new Wheat();
}
}