java协变函数
2016-10-25 本文已影响70人
抓兔子的猫
java 方法名相同,参数列表相同,返回值不同一般会报错,但有一种特殊情况 :
java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方法返回类型的子类。
协变返回类型允许返回更为具体的类型
class Grain{
public String toString(){
return "Grain";
}
}
class Wheat extends Grain{
public String toString(){
return "Wheat";
}
}
class Mill{
Grain process(){
return new Grain();
}
}
class WheatMill extends Mill{
Wheat process(){
return new Wheat();
}
}
public class CovariantReturn {
public static void main(String [] args){
Mill m = new Mill();
Grain g = m.process();
System.out.println(m.process());
m = new WheatMill();
System.out.println(m.process());
}
} ```
输出 Grain
Wheat