OBJECT PASCAL 多重继承——BY CJ(100分)

  • 主题发起人 主题发起人 CJ
  • 开始时间 开始时间
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
和人聊天,谈起这个,恶不爽,大家讨论
 
能否详述原委?
若对继承的概念不清可看Turbo Pascal的OOP编程技术一书!
 
OBJECT PASCAL不能多重继承,
但是可以使用类似于JAVA的接口,可以弥补没有多重继承的不足。
 
这问题可以参阅:
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=108730
 
pascal 不采用多重继承,也是出于系统稳定性考虑,采用多重继承时,对于系统分析,是十分方便的,可以直接表达系统的概念。但在编码时,采用多重继承将大大
增加系统的复杂度。将极大增加系统的调试和测试工作量。
而且多重继承可以通过复合和分解(不是is a关系,而是has a关系)来达到同样的目的,其实delphi目前就是这么做的,
 
写com接口的实现类时
TXXX=class(TComObject,Ixxx)
......
End;
算不算是多重继承?
 
这里使用的是接口:
TXXX=class(TComObject,Ixxx)

TXXX是新类,TComObject是基类,Ixxx是新类TXXX要实现的接口,也就是说TXXX
除了继承了TComObject的成员外,还必须实现接口IXXX中定义的所有接口(方法)。
不算是多重继承,接口中定义的所有接口必须在新类或基类中实现的,不能继承接口种的任何方法,接口关系也无法自动继承到派生类中。
 
sorry 各位,事情是这样的(热泪盈眶的说):
昨天在 SEE 与人聊天,谈到C++的问题,有人问,DELPHI是否有多重继承
我说没有,可有人说有,并说在 PASCAL 的 SOURCE 中是常见的,CJ 以为
显然是自己孤陋寡闻了,请教之,此君举一例:

TCJ = class(THuman,TDog);
后曰:哎呀,此两类不相容,改之:
TCJ = class(TObject,TDog);

CJ好象未曾见过类似东东,也未听说PASCAL中的多重继承,显然,C出生的
CJ,学C++有没有好好写过程序,半路出家到 OBJECT PASCAL,基础显然不
好,觉得需详细探究此问题,故有此一问。

今天,情急之下,我把 DELPHI 的 OBJECT PASCAL REFERENCE 从头到尾仔
细阅读一遍,还是没有答案,最多也是个 INTERFACE 而。

不幸的是:经此一看,把 CJ 脑子里的 OBJECT PASCAL 理论搞的乱七八糟
自从上次从桌上摔下来之后,从没有像现在脑子那么混乱的。

请诸位大侠务必帮忙,帮 CJ 理一下概念,画龙点睛即可,只是理一下,万
分感谢。
 
delphi 确实没有类似C++的多重继承,只是用interface,据说是为避免混乱!
 
没人帮我?哭!这几天脑子恶乱。昨天有人问我 BLOCKWRITE 的问题,我
说不知道那是什么玩意。还去看什么 HELP。
 
听君一席谈,胜读十年书.

我也来听听
 
同意MengZhaoXing的说法。
Object Pascal的编译之所以这么快(比C++),其原因之一就是没有用多重继承。
其实多重继承是不会形成回路的,一般是一棵倒棵,它可以转化成一棵二叉树。
OBJECT PASCAL不是纯粹的OOP。
但是,它没有JAVA的死板,也没有C++的“放荡”,
它表现的是传统的过程、Borland Pascal中的单元与OOP的完美结合。
我用过JAVA,用过C++(VC++,BC++),
但使用Delphi进行OOP编程是令我感到最惬意的!
(以上观点只是我个人意见)
 
To CJ:
Sorry, CJ, 没想到那天我瞎吹让你感到不爽,在此向您老人家赔罪了。
(解铃还需系铃人?)
我发现我对OBJECT PASCAL的理解错位恶多,居然把实现接口的定义理解为
多重继承,看来我还得认真钻研各种语言的基础概念。
不过我还是挺喜欢DELPHI中的VCL这颗大树。这棵树实现了一切!
99.6.19
 
究竟何谓“多重继承”?
明确的概念是什么?
 
子类继承自多个父类, 具备所有父类的public和published方法与属性

大部分情况下不需要多继承.

 
最近脑子清楚点了,谢谢诸位
ZCD:没事
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
845
SUNSTONE的Delphi笔记
S
S
回复
0
查看
778
SUNSTONE的Delphi笔记
S
后退
顶部