0xAA55 发表于 2015-10-6 22:03:54

【VB6】VB的类继承

VB6是一款面向对象的语言,这表示VB6也是满足面向对象的许多特性的。

类继承是个什么概念?假设我们定义一个类叫“人”,人类有许多的共同点,因此“人”也应该有对应的功能——吃饭干活睡觉。
但是如果要细分的话,不同的人吃饭、干活、睡觉的方式都不一样。因此我们需要将“人”这个类在细分为“男人”、“女人”等。这个过程叫“类继承”。

VB6的类继承需要使用的关键字是Implements

首先我们建立一个空的工程,删除Form1,然后添加三个类模块:人.cls,男人.cls,女人.cls和一个模块:modMain.bas
首先我们定义“人”的接口:Option Explicit

Sub 干活()
MsgBox "人干活", vbOKOnly, "人"
End Sub

Sub 吃饭()
MsgBox "人吃饭", vbOKOnly, "人"
End Sub这代码表示“人”的功能是“干活”和“吃饭”。接下来就是关键的一步。
我们在男人.cls中写下这句:Implements 人然后我们就可以这样写继承的方法了:

可以看到我们可以继承“人”的“吃饭”和“睡觉”。“男人”的代码是这样的:Option Explicit

Implements 人

Sub 人_吃饭()
MsgBox "男人吃饭", vbOKOnly, "男人"
End Sub

Sub 人_干活()
MsgBox "男人干活", vbOKOnly, "男人"
End Sub对应的“女人”的代码是这样的:Option Explicit

Implements 人

Sub 人_吃饭()
MsgBox "女人吃饭", vbOKOnly, "女人"
End Sub

Sub 人_干活()
MsgBox "女人干活", vbOKOnly, "女人"
End Sub那这样的话,我们来实际应用一下吧。
在modMain添加如下的代码:Option Explicit

Sub Main()
Dim 一个人 As New 男人
Dim 另一个人 As New 女人
Dim 奇怪的人 As New 人

一个人.人_吃饭
另一个人.人_吃饭
奇怪的人.吃饭

一个人.人_干活
另一个人.人_干活
奇怪的人.干活
End Sub没错就是这么调用的。
来看看实际的运行效果:






最后你会发现,原先写的“人”的“干活”函数被覆盖了。
也就是说被继承的类其实只是个接口而已。
源码下载:

参考资料:
http://tieba.baidu.com/p/1795854449 (向楼主致敬)

VB6下载:
http://www.0xaa55.com/thread-95-1-1.html

MSDN下载:
http://www.0xaa55.com/thread-20-1-1.html

kx25 发表于 2018-11-20 00:04:01

例子不对啊,把 男人.cls,女人.cls 中的“ Implements 人 ”去掉了,运行结果一样啊。

modMain.bas 应该这样写:

Option Explicit

Sub Main()
Dim 一个男人 As New 男人
Dim 一个女人 As New 女人

Call 叫人吃饭(一个男人)
Call 叫人吃饭(一个女人)

Call 叫人干活(一个男人)
Call 叫人干活(一个女人)

End Sub

Sub 叫人吃饭(要叫的人 As 人)
    要叫的人.吃饭
End Sub

Sub 叫人干活(要叫的人 As 人)
    要叫的人.干活
End Sub

' 人.cls,男人.cls,女人.cls 还是照楼主的写

cyycoish 发表于 2015-10-7 00:17:18

于是A5也开始逛vb吧了

0xAA55 发表于 2015-10-7 00:46:21

cyycoish 发表于 2015-10-7 00:17
于是A5也开始逛vb吧了

偶尔百度到的。

0xAA55 发表于 2018-11-20 02:50:14

kx25 发表于 2018-11-20 00:04
例子不对啊,把 男人.cls,女人.cls 中的“ Implements 人 ”去掉了,运行结果一样啊。

modMain.bas 应该 ...

对,是应该这样写。
页: [1]
查看完整版本: 【VB6】VB的类继承