LearnJava 多态之协变返回类型

协变返回类型

这里写图片描述
JavaSE5 中添加了协变返回类型,它表示在导出类中的被覆盖方法可以可以返回基类方法的返回类型的某种导出类型:

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 = new Grain();
        System.out.println(g);
        m = new WheatMill();
        g = m.process();
        System.out.println(g);
    }
}/* Output:
Grain
Wheat
*///:~

总结:

JavaSE5 与Java较早版本之间的主要差异就是较早版本将强制process( )的覆盖版本必须返回Grain,而不能返回Wheat,尽管Wheat是从Grain中导出的,因而也应该是一种合法的返回类型。协变返回类型允许返回更具体的Wheat类型。

多态意味着“不同的形式“。在面向对象的程序设计中,我们持有从基类继承而来的相同接口,以及使用该接口的不同形式:不同版本的动态数据绑定方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值