override实际上是多态实现的基础 对么

slowgrace 2009-06-30 10:02:13
override实际上是多态实现的基础,对么?

(1)多态的概念
这里的“多态”指的是VB6文档里提到的那种多态,就是多多变态的意思,呵呵,开个玩笑。就是,汗,好像还真不是一句话能说清楚的。上代码吧:

Dim Dog As clsIDog    
For Each Dog In Kennel
Dog.Eat
Next Dog


你看,我说的就是这种多态。假设kennel里有很多种狗,有藏獒也有京巴,它们吃东西的具体形式不大一样。但是我用他们的父类dog对象,就可以在程序运行期间动态地调用子类的方法。总之,这里说的多态,就是父类调用子类的方法,就是后期绑定。


(2)override的概念
override一般翻译成覆盖或者重写。注意我说的不是overload啊,那个是重载,指的是相同的函数名,可以有不同的函数签名(就是参数列表可以不同)。

override指的是子类继承父类的时候,子类重新实现父类的同名方法(参数列表也要完全相同)。


(3)要请教的问题
在VB6里实现上面的这种多态,是用implements。然后在具体类里实现接口类里的方法。这样的话,是不是可以说override是实现多态的基础呢?甚至继承也是。

没有子类继承接口类,就没办法实现多态,对吧?在此基础上,没有override也没办法实现多态,对吧?

可是的话,为什么我没看到有别人这么说呢?还是我对override这个概念理解的不对?
...全文
170 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
slowgrace 2009-07-03
  • 打赏
  • 举报
回复
谢谢楼上各位,结帖了。小结在这个文章里:http://blog.csdn.net/slowgrace/archive/2009/07/02/4316003.aspx



----
给新版CSDN的建议

舉杯邀明月 2009-07-01
  • 打赏
  • 举报
回复
楼主是个高人啊~~~~~~~~~~
ahao 2009-07-01
  • 打赏
  • 举报
回复
多态只是一种概念,而继承更多强调了语法,而语法是可以有不同实现的。
slowgrace 2009-07-01
  • 打赏
  • 举报
回复
component tool's guide
一笑拔剑 2009-07-01
  • 打赏
  • 举报
回复
西西筒子今天问题好多啊

看什么书那
晨星 2009-07-01
  • 打赏
  • 举报
回复
我觉得可以简单理解成:多态是抽象的概念,而继承、override则是具体的实现机制。
晨星 2009-07-01
  • 打赏
  • 举报
回复
“多态”是个比较抽象的概念。
很多语言中,动行时的动态多态就是靠类的继承再加上成员函数的override来实现的。
C++中通过模板还可以实现编译时的静态多态。
slowgrace 2009-07-01
  • 打赏
  • 举报
回复
汗。给你私信了。
Tiger_Zhao 2009-07-01
  • 打赏
  • 举报
回复
多态只是继承的一种应用方式。
而且到底
  多态 = override
还是
  多态 = 你说的Dog.Eat
完全是术语的定义概念,用何种定义就用何种判定方式。
你的问题在不同定义下会有不同答案。
slowgrace 2009-07-01
  • 打赏
  • 举报
回复
我在说多态啊?你是笔误么?怎么在说继承?

我的论据最重要是这个:“没有子类继承接口类,就没办法实现多态,对吧?在此基础上,没有override也没办法实现多态,对吧? ”
slowgrace 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chen8013 的回复:]
楼主是个高人啊~~~~~~~~~~
[/Quote]

不带这么嘲笑人的哈
slowgrace 2009-06-30
  • 打赏
  • 举报
回复
DXS
嗷嗷叫的老马 2009-06-30
  • 打赏
  • 举报
回复
DB................
嗷嗷叫的老马 2009-06-30
  • 打赏
  • 举报
回复
BD............
神马都能聊 2009-06-30
  • 打赏
  • 举报
回复
楼主说的好哇,我顶啊!

不明真相的群众飘过。。
通过本课程学习您可以学习到Dart语言如下知识:第1章 Dart语言概述:Dart语言简介、Dart语言支持平台开发、Flutter为什么选择Dart语言。第2章 开发环境搭建:下载Dart SDK、Windows下安装Dart SDK、macOS下安装Dart SDK、Visual Studio Code开发工具、IntelliJ IDEA开发工具。第3章 完成个Dart程序:动动手写一个HelloWorld、Dart源代码文件组织结构、Visual Studio Code调试Dart代码、IntelliJ IDEA调试Dart代码。第4章 Dart语法基础:标识符、关键字、变量、常量、注释、库。第5章 Dart数据类型:数值类型、字符串、数据类型相互转换、布尔类型和枚举类型第6章 运算符:算术运算符、算术赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、类型检查运算符。第7章 控制语句:分支语句、循环语句、跳转语句。第8章 函数:函数声明、可选参数、头等函数(first-class function)、匿名函数。第9章 类:类声明、getter和setter访问器、构造函数、静态变量和静态方法、级联符号。第10章 继承与多态:Dart中的继承实现、调用父类构造函数、成员变量的覆盖(Override)、方法的覆盖(Override)、多态、混入(Mixins)。第11章 抽象类与接口:抽象类、接口、Dart中隐式接口、实现接口。第12章 数据容器:List容器、Set容器、Map容器、泛型。第13章 异常处理:捕获异常、try-on捕获异常、try-catch捕获异常、try-on-catch捕获异常、使用finally代码块、手动抛出异常、自定义异常类。第14章 异步编程:Dart异步处理机制、案例:同步函数实现读取文件、案例:异步函数实现读取文件、Future对象。  

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧