协变式返回(Covariant Return)

本文深入探讨Java中协变返回机制的原理、实例及应用,通过具体代码演示如何实现子类方法返回值为父类返回值的子类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述。

     协变式返回(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());
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值