找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 5039|回复: 4

【VB6】VB的类继承

[复制链接]

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24225 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2015-10-6 22:03:54 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

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

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

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

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

  2. Sub 干活()
  3. MsgBox "人干活", vbOKOnly, "人"
  4. End Sub

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

  2. Implements 人

  3. Sub 人_吃饭()
  4. MsgBox "男人吃饭", vbOKOnly, "男人"
  5. End Sub

  6. Sub 人_干活()
  7. MsgBox "男人干活", vbOKOnly, "男人"
  8. End Sub
复制代码
对应的“女人”的代码是这样的:
  1. Option Explicit

  2. Implements 人

  3. Sub 人_吃饭()
  4. MsgBox "女人吃饭", vbOKOnly, "女人"
  5. End Sub

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

  2. Sub Main()
  3. Dim 一个人 As New 男人
  4. Dim 另一个人 As New 女人
  5. Dim 奇怪的人 As New 人

  6. 一个人.人_吃饭
  7. 另一个人.人_吃饭
  8. 奇怪的人.吃饭

  9. 一个人.人_干活
  10. 另一个人.人_干活
  11. 奇怪的人.干活
  12. End Sub
复制代码
没错就是这么调用的。
来看看实际的运行效果:
20151006215745.png
20151006215755.png
20151006215805.png
20151006215815.png
20151006215823.png
20151006215831.png
最后你会发现,原先写的“人”的“干活”函数被覆盖了。
也就是说被继承的类其实只是个接口而已。
源码下载: 类继承.7z (1.06 KB, 下载次数: 6)

参考资料:
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
回复

使用道具 举报

0

主题

3

回帖

21

积分

用户组: 初·技术宅

UID
4487
精华
0
威望
3 点
宅币
12 个
贡献
0 次
宅之契约
0 份
在线时间
2 小时
注册时间
2018-11-19
发表于 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 还是照楼主的写
回复 赞! 1 靠! 0

使用道具 举报

85

主题

175

回帖

3990

积分

用户组: 超级版主

No. 418

UID
418
精华
14
威望
53 点
宅币
1974 个
贡献
1582 次
宅之契约
0 份
在线时间
252 小时
注册时间
2014-8-9
发表于 2015-10-7 00:17:18 | 显示全部楼层
于是A5也开始逛vb吧了
In the beginning I was not the best.
And the world was also not the best.
But I still know that I am who I am.
Because I think that it is good.
I have been working hard.
I have been keeping growth with the world.
And it was so.
回复 赞! 靠!

使用道具 举报

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24225 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
 楼主| 发表于 2015-10-7 00:46:21 | 显示全部楼层
cyycoish 发表于 2015-10-7 00:17
于是A5也开始逛vb吧了

偶尔百度到的。
回复 赞! 靠!

使用道具 举报

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24225 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
 楼主| 发表于 2018-11-20 02:50:14 | 显示全部楼层
kx25 发表于 2018-11-20 00:04
例子不对啊,把 男人.cls,女人.cls 中的“ Implements 人 ”去掉了,运行结果一样啊。

modMain.bas 应该 ...

对,是应该这样写。
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-19 11:15 , Processed in 0.046134 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表