一、概述。
协变式返回(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());
}
}