天天看點

協變式傳回(Covariant Return)

一、概述。

     協變式傳回(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());

 }

}