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