8.多态Polymorphism,向上转型Upcasting,动态方法调度(dynamic method dispatch)

什么叫多态?简言之,马 克 - t o - w i n:就是父类引用指向子类时,父类和子类必须同时拥有某个同名函数,父类引用到底指向谁(调用谁的函数),是在runtime时决定的,因此呈现多种状态(不知道会指向若干子类中的哪一个还是父类自己)。拿上一节的例子来讲,比如运行时如果用户输入自行车,就执行自行车的驾驶方法。如果用户输入小轿车,就执行小轿车的驾驶方法, 涉及到用户,这些都只能在运行时才能干。运行时的,就是动态的,所以这也是动态方法调度(dynamic method dispatch), 既然是父类指针指向子类,这也是向上转型Upcasting(为什么是向上?看我本章的第一张图:父类 fuLei=(父类)new 子类(); ,,,,感觉到一种向上转型的意味吗?子类 zilei=(子类)fulei;    这是向下转型)。顺便提一句。马克-to-win:学术界另有一种说法,overload也算多态。我认为这只是学术上的一种说法而已,张三爱这么认为,李四爱那么认为,无所谓对错。不像语法错误,错了,编译器真不让你通过。不过本书作者不支持这种overload说法。

更多内容请见原文,文章转载自:https://blog.csdn.net/qq_44639795/article/details/103117401

最新文章

  1. 作为一个程序猿,是不是经常会用到.chm文档,但是我们可能会遇到这样那样的问题,比如.chm文档打不开
  2. Entity Framework Code First数据库自动更新
  3. 移植UE4的模型操作到Unity中
  4. 预编译那些事#define后面只跟一个“参数”
  5. sql openrowset
  6. VCL+FMX 双剑合壁编程
  7. bootbox api
  8. restful架构风格设计准则(一)以资源为中心、自描述的请求响应、资源状态迁移为粒度
  9. 转载:使用Math.floor和Math.random取随机整数
  10. 03一些View总结
  11. Java进阶篇设计模式之十一 ---- 策略模式和模板方法模式
  12. Kotlin 检查空类型
  13. 页面滚动图片等元素动态加载插件jquery.scrollLoading.js
  14. LDO和DC-DC的概念,区别及优缺点
  15. 【Codeforces 1120A】Diana and Liana
  16. SQL多表连接查询(详细实例)(转)
  17. 菜鸟学Java(八)——dom4j详解之读取XML文件
  18. hdu2222 Keywords Search【AC自动机】
  19. C# DataTable添加行和列
  20. 李洪强iOS开发之苹果企业开发者账号申请流程

热门文章

  1. zookeeper的JAVA API使用
  2. Dubbo服务框架和spring-cloud架构的优缺点
  3. 在 k8s 以外的分布式环境中使用 Dapr
  4. tensorflow源码解析之framework-graph
  5. 那些年,Android开发踩过的坑
  6. 关于linux命令的随笔第一篇
  7. Windows下载安装RabbitMQ教程-------报错卸载重新安装 (要卸载干净 -看下文)
  8. SignalR 入门 .netCore实现聊天室
  9. Linux系统配置(系统优化)
  10. Linux下编译安装配置MariaDB数据库