一、概述。
協變式傳回(Covariant Return):即重寫超類的方法的傳回類型與超類的傳回類型的子類。
在Java1.4及以前,子類方法如果要覆寫超類的某個方法,必須具有完全相同的方法簽名,包括傳回值也必須完全一樣。在Java5.0中放寬了這一限制,隻要子類方法與超類方法具有相同的方法簽名,或者子類方法的傳回值是超類方法的子類型,就可以覆寫。
注意:"協變傳回(covariant return)",僅在subclass(子類)的傳回類型是superclass(父類)傳回類型的extension(繼承)時才被容許。
二、執行個體。
1、父類People。
package covariantType;
public class People {
private String name;
public People(String name){
this.name = name;
}
public Object print(){
return "name = "+name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2、子類Student。
package covariantType;
public class Student extends People{
private String grade;
public Student(String name,String grade){
super(name);
this.grade = grade;
}
public String print(){
return "name = "+this.getName()+",grade = "+this.getGrade();
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}
3、Client類。
package covariantType;
public class Client {
public static void main(String[] args){
People people1 = new People("aa");
System.out.println(people1.print());
People people2 = new Student("aa","Grade 1");
System.out.println(people2.print());
}
}