技术宅的结界

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

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2473|回复: 4
收起左侧

【VB6】VB的类继承

[复制链接]

1060

主题

2443

帖子

6万

积分

用户组: 管理员

一只技术宅

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

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

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

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

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

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

首先我们建立一个空的工程,删除Form1,然后添加三个类模块:人.cls,男人.cls,女人.cls和一个模块:modMain.bas
首先我们定义“人”的接口:
[Visual Basic] 纯文本查看 复制代码
Option Explicit

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

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

Implements 人

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

Sub 人_干活()
MsgBox "男人干活", vbOKOnly, "男人"
End Sub
对应的“女人”的代码是这样的:
[Visual Basic] 纯文本查看 复制代码
Option Explicit

Implements 人

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

Sub 人_干活()
MsgBox "女人干活", vbOKOnly, "女人"
End Sub
那这样的话,我们来实际应用一下吧。
在modMain添加如下的代码:
[Visual Basic] 纯文本查看 复制代码
Option Explicit

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

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

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

使用道具 举报

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威望 +1 宅币 +4 收起 理由
0xAA55 + 1 + 4

查看全部评分

85

主题

260

帖子

3765

积分

用户组: 管理员

No. 418

UID
418
精华
13
威望
52 点
宅币
1969 个
贡献
1367 次
宅之契约
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.

1060

主题

2443

帖子

6万

积分

用户组: 管理员

一只技术宅

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

偶尔百度到的。

1060

主题

2443

帖子

6万

积分

用户组: 管理员

一只技术宅

UID
1
精华
221
威望
348 点
宅币
19518 个
贡献
40308 次
宅之契约
0 份
在线时间
1846 小时
注册时间
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, 2020-7-16 10:32 , Processed in 0.104380 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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