Implements IVBStrangerPrivate Sub IVBStranger_DontKnowVB() Dim You As Object Set You = CreatObject("IDontThinkVBIsAOOPLanguage") End Sub 我的程序包含VB两种多态性,看出来了吗?
to Nicrosoft: 不知道我这样理解对不对: 无法继承,也就是说不能扩展现有对象的功能,形成新的类。如果这样的话,新的类什么都要做,不是很辛苦?
C++的编译速度还没有Pascal快, C++能实现的Pascal都能,干吗要Delphi支持C++????? 为什么不要 C++ 支持 Pascal????
to Wescom:你的话应该说没有错吧,不过,我觉得这不是继承的主要“功能”:继承,可以让程序员对事物的抽象更符合客观世界(我们人本身就是继承而来的嘛),派生类可以细化基类。同时,拥有相同基类的不同派生类,可以共享基类的代码,这样,便于程序员维护代码,你不必维护两份相同的代码(很容易出错),而每个派生类的代码都是独特的,这是代码重用的一个优点。还有,多态是建立在继承的基础上的。没有继承,如何实现所谓的“接口重用”?没有继承,虚函数有必要存在吗?
嗬嗬,你不用担心,我还有JAVA 不过,你就是不能相信VB有多态性,那么你看看这段代码吧: Public Interface IAnimal Sub Eat(Target As Object) Sub Move(dX As Single, dY As Single) End InterfacePublic Class 食肉动物:Implements IAnimal Public Sub Eat(Target As Object) Implements IAnimal.Eat '食肉动物吃的特点,略 End Sub
Public Sub Move(dX As Single, dY As Single) Implements IAnimal.Move '使食肉动物跑 End Sub
Public Overridable Sub Bite(Target As IAnimal) '先是咬的代码,然后再吃 Me.Eat(Target) End Sub End ClassPublic NotInheritable Class 老虎:Inherits 食肉动物 Public Overrides Sub Bite(Target As IAnimal) '老虎咬的特点 'Me.Eat(Target) End Sub End ClassPublic Class 食草动物:Implements IAnimal Public Sub Eat(Target As Object) Implements IAnimal.Eat '吃植物 End Sub .... End ClassFriend Module MStart Public Sub Main() Dim tiger As New 老虎 tiger.Bite(New 食草动物) End Sub End Module你对这段程序的看法要取决于你对VB多态性的认识了
上面是VB7的代码,你肯定没语言,下面是VB6的多态性 'Class IAnimal Public Sub Eat(Target As Object) End SubPublic Sub Move(dX As Single, dY As Single) End Sub'Class Carnivore Implements IAnimalPrivate Sub IAnimal_Eat(Target As Object) '食肉动物吃东西 End SubPrivate Sub IAnimal_Move(dX As Single, dY As Single) '食肉动物移动 End SubFriend Sub Bite(Target As IAnimal) '食肉动物咬 IAnimal_Eat Target End Sub'Class Herbivorous Implements IAnimal'....实现它'Module MStart Public Sub Main() Dim tiger As New Carnivore Dim cow As New Herbivorous Dim ia As IAnimal Set ia = tiger ia.Eat(cow)
学会了再来现!!
谢谢
但是object pascal在对面向对象的支持上应该和C++是在同一个层次上的.
for i:=1 to 1000
真无聊
Dim You As Object
Set You = CreatObject("IDontThinkVBIsAOOPLanguage")
End Sub
我的程序包含VB两种多态性,看出来了吗?
就我所知,C++和Object Pascal支持面向对象的程序设计(OOP),而VB是基于对象的。
意思就是VB可以继承使用对象,但是不能以完全面向对象的方法定义新类。这些认识都是
对VB 6及以前的版本,据说VB 7已经完全支持OOP了。再次申明,对VB不是很了解,所以没太看明白Ninputer的代码。同时还想请教一下Ninputer兄,VB中能不能定义一个全新的类?怎样实现它?
永远记住,delphi和VC只是一种工具,而工具只是用来帮我们达成某种目标的,也就是说只要能达到这种目标,无论用什么工具都行,关键是谁更有效!
也能用C++的什么封装性,多态性的话,
那么,开发工具市场上会出现什么结果?????
pascal是可以做成C/C++这种语言开发工具的的,关键是否
是编译器难做还是别的原因呢????"已经有C++Builder存在了,老兄,认为还有这个可能吗?
Delphi 和 C++Builder 要合并么?这个观点很可笑!Object Pascal 的优雅,是C++语言不可比的,但是不是说
Pascal 比 C++ 要好,每种语言都有自己的性格特点,我把
Object Pascal 比作大家闺秀,C++比作西部牛仔,两者风格不同!
但是都有其存在的必要,谁也代替不了谁!
不知道我这样理解对不对:
无法继承,也就是说不能扩展现有对象的功能,形成新的类。如果这样的话,新的类什么都要做,不是很辛苦?
C++能实现的Pascal都能,干吗要Delphi支持C++?????
为什么不要 C++ 支持 Pascal????
>也能用C++的什么封装性,多态性的话,
>那么,开发工具市场上会出现什么结果?????
不用那么了,就是C++ Builder,就是现在这样的结果>pascal是可以做成C/C++这种语言开发工具的的,关键是否
>是编译器难做还是别的原因呢????
Pascal和C/C++都是编程语言,Delphi是开发工具包。
这段话的意思我的理解是:
“男人其实是可以做母亲的,关键是他的母亲生他的时候
要把他生成女人,但他母亲为什么把他生成男人而不生成
女人,是有什么困难吗?”
说实在,我也不知道。
这位仁兄,看了几页C++的书,知道了几个名词,就来发
这么大的post,厉害、佩服。
对于对象层次的建立,总觉得有些困难。
我觉得在自然界中,存在都是对象的实体或者说是对象层次的最底层,是人们对这些实体进行概括总结,然后才形成了对象,层层向上,最后到根。而程序设计,确实要先设计出基类,然后再继承发展出下一层,这需要很高的总结能力。
是的,要使用面向对象方法设计出完善的架构,的确需要相当的OO设计、分析经验。
多谢指点。
其实留意你已经一段时间了。最初发现你,是你在VB版的关于有人说Windows 90%是用VB写的(大概是这个意思)贴子。看你一个人舌战群VB,挺好玩的。
CSDN的人气特旺,虽有不少好贴子,可惜都被水给淹了。还有就是一些稀奇古怪的人和些稀奇古怪言论,非常长见识。
对了,还有就是火气特大,动不动就脸红脖子粗的。
什么不能使用多态性,VB摆在那里的Implements语句是干什么用的?Delphi也有Implements语句,虽然不是一码事,但也和接口有关,而Java的Implements和Vb的一模一样。这说明什么?VB可以实现多重接口。
关于继承,我不得不说你不能自由使用,但是,如果你仔细观察,VB中有Inherits语句,他在隐藏地使用继承。而且,非得使用继承吗?VB的类生成器可以自动生成重用某个类的委派类(相似于继承类),再结合多重接口,许多继承功能都可以实现。
以上仅限于VB6,VB7是完整的面向对象编程语言,不用这么麻烦
不过,你就是不能相信VB有多态性,那么你看看这段代码吧:
Public Interface IAnimal
Sub Eat(Target As Object)
Sub Move(dX As Single, dY As Single)
End InterfacePublic Class 食肉动物:Implements IAnimal
Public Sub Eat(Target As Object) Implements IAnimal.Eat
'食肉动物吃的特点,略
End Sub
Public Sub Move(dX As Single, dY As Single) Implements IAnimal.Move
'使食肉动物跑
End Sub
Public Overridable Sub Bite(Target As IAnimal)
'先是咬的代码,然后再吃
Me.Eat(Target)
End Sub
End ClassPublic NotInheritable Class 老虎:Inherits 食肉动物
Public Overrides Sub Bite(Target As IAnimal)
'老虎咬的特点
'Me.Eat(Target)
End Sub
End ClassPublic Class 食草动物:Implements IAnimal
Public Sub Eat(Target As Object) Implements IAnimal.Eat
'吃植物
End Sub
....
End ClassFriend Module MStart
Public Sub Main()
Dim tiger As New 老虎
tiger.Bite(New 食草动物)
End Sub
End Module你对这段程序的看法要取决于你对VB多态性的认识了
'Class IAnimal
Public Sub Eat(Target As Object)
End SubPublic Sub Move(dX As Single, dY As Single)
End Sub'Class Carnivore
Implements IAnimalPrivate Sub IAnimal_Eat(Target As Object)
'食肉动物吃东西
End SubPrivate Sub IAnimal_Move(dX As Single, dY As Single)
'食肉动物移动
End SubFriend Sub Bite(Target As IAnimal)
'食肉动物咬
IAnimal_Eat Target
End Sub'Class Herbivorous
Implements IAnimal'....实现它'Module MStart
Public Sub Main()
Dim tiger As New Carnivore
Dim cow As New Herbivorous
Dim ia As IAnimal Set ia = tiger
ia.Eat(cow)
Set ia = cow
tiger.Bite(ia)