Java之协变返回类型理解和简单实例
来源:互联网 发布:ps4 淘宝 送游戏 编辑:程序博客网 时间:2024/05/18 19:18
开心一笑
【早上起来,发现天气越来越冷了,白粽子记得要多包几层叶】
提出问题
Java中协变返回类型如何理解???
解决问题
概念
导出类(子类)覆盖(即重写)基类(父类)方法时,返回的类型可以是基类方法返回类型的子类。
实例
package com.evada.de;/** * @Author 阿毅 * Created by Ay on 2016/12/4. */public class Ay { public static void main(String[] args) { Person person = new Boy(); Flower flower = person.buy(); flower.like(); //! flower.love(); 编译错误 //因为是协变返回类型,所以可以向下转型 RoseFlower roseFlower = (RoseFlower) person.buy(); //可以调用like方法 roseFlower.like(); //可以调用love方法 roseFlower.love(); }}class Person{ public Flower buy(){ System.out.println("Flower..."); return new Flower(); }}/** * 男孩 */class Boy extends Person{ /** * 这里覆盖Person类的buy * @return */ @Override public RoseFlower buy(){ System.out.println("RoseFlower..."); //注意这里,这里就是协变返回类型 //导出类**(子类)覆盖(即重写)**基类**(父类)方法时, // 返回的类型可以是基类方法返回类型的子类 return new RoseFlower(); }}class Flower{ /** * 让普通人喜欢 */ public void like(){ System.out.println("like"); }}class RoseFlower extends Flower{ /** * 让女孩喜欢 */ public void love(){ System.out.println("love...."); }}
打印结果:
RoseFlower...likeRoseFlower...likelove....
协变返回类型运行返回更加具体的类,比如上面的RoseFlower类,而不是Flower类,在java中,儿子比父亲强,返回子类适用范围更为广泛,因为除了可以调用父类的方法,还可以调用自己的方法,get起来。
参考文章
【1】理解Java中的协变返回类型
【2】Thinking in Java(Java编程思想)
【3】关于java可变(协变)返回类型的解说之一————基类与派生类
读书感悟
来自《徒然草》吉田兼好
- 世上的事,最令人回味的,是始和终这两端。
- 人心是不待风吹而自落的花。从前的恋人,还记得她情真意切的话,但人已离我而去,形同路人。此种生离之痛,犹甚于死别也。故见到染丝,有人会伤心;面对岔路,有人会悲泣。
- 不管什么事,不要一副行家里手的样子。有教养的杰出人士,即使完全懂得的问题,难道就无节制地炫耀吗?在自己精通的专门领域,言辞一定要慎重,只要别人不提问就不要发言,这才是风度。
- 那所有应该做而没有做的,逐日侵蚀沉淀之后,贮满泪水,就成为遗憾湖。那所有不该做而又做了的,层层堆积重叠之后,暗影耸然,就成为悔恨山。
- 什么是真智慧呢?即是要明白可与不可都一样的道理。
- 立志要成就一事的人,就不要因他事之无法兼顾而感到痛惜;也不要因他人之嘲笑自己有诸般不能而感到羞耻。一事之成,要以舍弃万事为代价。
- 凡事一知半解,却夸夸其谈、品头论足,必令听者闻之生厌。
其他
如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!
5 1
- Java之协变返回类型理解和简单实例
- java 协变返回类型的理解
- Java协变返回类型
- Java协变返回类型
- Java之协变返回类型详解(附源码)
- java学习笔记---协变返回类型
- java中的协变返回类型
- 协变返回类型
- 返回类型协变
- 协变返回类型
- 协变返回类型
- 协变返回类型
- 协变返回类型
- 协变返回类型
- 协变返回类型
- 协变返回类型
- 协变返回类型
- Java之向上转型,向下转型简单理解和实例
- Struts笔记
- 连续子数组的最大和
- useradd和adduser的区别
- Leetcode 之 MissingNumber
- 删除一个字符串中出现次数最少的字符
- Java之协变返回类型理解和简单实例
- Web请求处理
- LeetCode 396. Rotate Function
- phonegap 安装及环境配置(简介)
- 小雷会员俱乐部,加入就对了!
- 当前用户不在sudoers文件中
- 图形中添加注释(annotate)
- Android框架之Gson解析
- 数组与数组名