先附上书上的demo:

class Processor{public String name(){return getClass().getSimpleName();}Object process(Object input){return input;}
}class Upcase extends Processor{String process(Object input){return ((String)input).toUpperCase();}
}class Downcase extends Processor{String process(Object input){return ((String)input).toLowerCase();}
}class Splitter extends Processor{String process(Object input){return Arrays.toString(((String)input).split(" "));}
}
public class Apply {public static void process(Processor p, Object s){System.out.println("Using Processor " + p.name());System.out.println(p.process(s));}public static String s = "Disagreement with beliefs is by definition incorrect";public static void main(String[] args) {process(new Upcase(), s);process(new Downcase(), s);process(new Splitter(), s);}}

解释:在面向对象程序设计中,协变返回类型指的是子类中的成员函数的返回值类型不必严格等同于父类中被重写的成员函数的返回值类型,而可以是更 "狭窄" 的类型。
Java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方法返回类型的子类。协变返回类型允许返回更为具体的类型。
以上解释来自:http://www.cnblogs.com/NotOnlyAnAnswer/p/3538539.html

创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为策略设计模式。这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分。策略就是传递进去的参数对象,它包含要执行的代码。这里,Processor对象就是一个策略,在main()中可以看到有三种不同类型的策略应用到了String类型的s对象上。

转载于:https://www.cnblogs.com/919czzl/p/6307576.html

java编程思想--协变返回类型相关推荐

  1. 12.JAVA编程思想——集合的类型

    12.JAVA编程思想--集合的类型 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51100510 标准Java 1.0 和1 ...

  2. 12 JAVA编程思想——集合的类型

    12.JAVA编程思想--集合的类型 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51100510 标准Java 1.0 和1 ...

  3. Java之协变返回类型理解和简单实例

    开心一笑 [早上起来,发现天气越来越冷了,白粽子记得要多包几层叶] 视频教程 大家好,我录制的视频<Java之优雅编程之道>已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定 ...

  4. java协变返回类型_Java中的协变返回类型

    java协变返回类型 协变返回类型 (Covariant return type) The covariant return type is that return type which may va ...

  5. java 数组 协变类型6_Java漫谈-协变返回类型

    Java SE5中添加协变返回类型,表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型. 如现有:导出类WheatMill,被覆盖方法process(),基类Mill,基类方法的返回类 ...

  6. Java编程思想 (1~10)

    [注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第一章 对象导论 1.万物皆对象 2.程序就是对象的集合 3.每个对象都是由其它对象所 ...

  7. 【java】《java编程思想》 读书笔记

    之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...

  8. 《JAVA编程思想》学习笔记:第8章(多态)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

  9. Java编程思想日志

    Thinking In Java的作者是大牛!做事要站在巨人的肩膀上有助于提高效率和开阔眼界!建议学习java的小伙伴儿有时间可以抽空了解一下,以下内容为读书笔记,比较杂乱,仅供参考,推荐阅读原著: ...

  10. Java编程思想翻译勘误

    总的来说,Java编程思想是一本好书:但是因为译者可能不懂计算机,很多地方都有严重错误. 之前和朋友抱怨过,朋友提议抱怨无用不如干点实事.遂决定边看边将自己找到的翻译错误贴出来,希望能给别人一些帮助. ...

最新文章

  1. linux open()调用的注意事项
  2. PMCAFF产品经理第一课 | 深圳站 现场集锦
  3. 计算机培训开场白,面试开场白及自我介绍范文4篇
  4. JavaBean的详细及引用
  5. http 请求默认时间_JMeter接口测试之HTTP请求默认值
  6. NYMEX ACCESS电子交易系统来
  7. c++编写手机小游戏代码_玩过自己开发的贪吃蛇吗?点这里,教你用Python写一个贪吃蛇小游戏!(附源代码)...
  8. cyyz: Day 4 网络流整理
  9. linux 卸载nvidia显卡驱动,Ubuntu 16.04 卸载Nvidia显卡驱动和cuda
  10. 查阅国外文献的网站有哪些?
  11. 【信息安全技术】期末复习考点汇总
  12. 用甘特图控件VARCHART XGantt搞定项目管理
  13. stl文件的解析和在线3d打印
  14. VS2017安装ImageWatch
  15. 13万人12306信息泄露 小伙挨个发邮件通知
  16. 电话程控交换机安装注意
  17. golang使用josn.Unmarshal报错:unexpected end of JSON input
  18. 高德地图--SDK集成--定位功能 地图定位搜索
  19. 入门文献复现——Murphy C K——Combining belief functions when evidence conflicts
  20. 至多删三个字符(动态规划字符串问题)

热门文章

  1. mysql行转列sql函数_(转)行变列SQL语句(MSSQL) - jack - 博客园
  2. options请求_HTTP 协议 POST 请求,为什么会有一个 OPTION?
  3. jquery validation用法
  4. false在python什么意思_python – `x [False]`在numpy中做什么?
  5. [渝粤教育] 西南科技大学 病虫防治 在线考试复习资料
  6. 【渝粤题库】 广东开放大学 劳动和社会保障法 形成性考核
  7. ACM 学习笔记(四) 数据结构之列表、数组、栈、队列
  8. 科学和工程中的信号处理
  9. 安装Fiddler后无法上网的问题
  10. [转] 如何提取word图片