【高级技术】VB6.0实现类的继承
vb吧
全部回复
仅看楼主
level 11
wucaibinfen1 楼主
很多人都说VB6.0是不支持类的继承的,实际上不是这样的。
VB6.0之所以是面向对象编程,是因为它支持面向对象编程中的所有概念,包括类的继承。
下面就说说如何在VB中实现类的继承,希望对大家有帮助,高手莫喷。
2012年08月16日 05点08分 1
level 11
wucaibinfen1 楼主
首先要搞清什么是类的继承? “继承”是面向对象软件技术当中的一个概念。如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类"。继承可以使得子类具有父类的各种属性和方法,另外,还可以为子类追加新的属性和方法。 很多语言是支持类的继承。
其实VB6.0也是支持的,只不过知道的人不多而已。
2012年08月16日 05点08分 2
level 11
wucaibinfen1 楼主
举个例子吧:
“人”是一个类,“学生”也算是一个类,“教师”也是一个类
学生是人,教师也是人,所以学生、教师都是人的子类,也就是学生、教师继承了“人”
所以如果人有“吃饭”这个方法,那么学生、教师也有吃饭这个方法。但是通常父类的属性方法在子类中不是完全相同的:
人有“吃饭”这个方法,但学生是吃学生餐,教师是吃教师餐,这是不同的

2012年08月16日 05点08分 3
level 11
wucaibinfen1 楼主
2012年08月16日 05点08分 4
level 11
wucaibinfen1 楼主
那么怎样在VB中实现类的继承呢?首先建立一个工程,删除Form1,

加3
个类模块,分别改名为学生,教师,人
首先在“人”这个类模块中添加吃饭方法,如下语句
Sub 吃饭()
End Sub
中间无需添加任何语句,因为学生、教师一个吃的是学生餐、一个是教师餐,我们等会会在这两个类中分别实现这个方法
2012年08月16日 05点08分 5
level 11
wucaibinfen1 楼主
打开"学生"类模块
因为“学生”继承了“人”,所以我们开头写如下语句
Implements 人
这个语句表示这个类是继承了“人”这个类模块
然后你会发现,上方的“通用”列表框中出现了“人”(就像窗体代码中的控件事件一样)
单击这个"人",然后弹出这样几行字:
Private Sub 人_吃饭()
End Sub
这就是继承了人的吃饭这个方法。
我们在中间输入这行语句模拟吃饭
Msgbox "我吃完学生餐了"

2012年08月16日 05点08分 6
level 11
wucaibinfen1 楼主
同样我们在教师这个模块写这些语句
Implements 人
Private Sub 人_吃饭()
MsgBox "我吃完教师餐了"
End Sub
2012年08月16日 05点08分 7
level 11
wucaibinfen1 楼主
另外,学生除了有吃饭这个方法,还有自己的方法(学习)。
这样,在学生类模块中再加入如下语句:
Sub 学习()
MsgBox "学习完毕"
End Sub
2012年08月16日 05点08分 8
level 11
wucaibinfen1 楼主
那么VB中的继承怎样体现呢?
在VB中,可以把一个子类对象赋值给父类对象变量并通过父类对象变量调用子类对象继承的方法、属性
也就是说,以下语句正确:
Dim 学生1 As New 学生
Dim 人1 As 人
Set 人1 = 学生1
人1.吃饭
但是 人1.学习 这种写法是错误的,因为学生并未继承这个方法,这是学生自己的方法
2012年08月16日 05点08分 9
level 11
wucaibinfen1 楼主
我们添加一个模块,写下如下语句
Sub 叫人吃饭(要叫的人 As 人)
要叫的人.吃饭
End Sub
再添加一个方法
Sub 叫学生学习(要叫的学生 As 学生)
要叫的学生.学习
End Sub
2012年08月16日 05点08分 10
level 11
wucaibinfen1 楼主
在这个模块中再创建一个启动过程:
Sub Main()
Dim 学生1 As New 学生
Dim 教师1 As New 教师
叫人吃饭 学生1
叫人吃饭 教师1
叫学生学习 学生1
End Sub
然后运行你可以发现,先显示吃完学生餐,再显示吃完教师餐,再显示学习完毕
这是因为先后把"学生1"、"教师1"赋值给了"叫人吃饭"过程中的"要叫的人"
虽然“要叫的人”是“人”类的,但学生类和教师类都继承了人类,所以便分别调用的学生和教师的吃饭方法
最后显示学习完毕,是因为学生类虽然继承了人类,但它自己有学习方法,因此仍然可以调用
2012年08月16日 05点08分 11
level 11
wucaibinfen1 楼主
好了,相信你已经掌握了VB6.0类的继承,希望能给你一些帮助
2012年08月16日 05点08分 12
感谢
2015年10月06日 14点10分
level 9
这。。。这个关键字微软官方怎么没有?
2012年08月16日 05点08分 13
level 9
哦,是通过接口来实现继承?
2012年08月16日 05点08分 14
level 11
[礼物] 我就不吐糟VB6里的继承了.
2012年08月16日 06点08分 15
Implements or Exdents
2012年08月16日 06点08分
level 6
老纸就是想离开武汉啊。。楼主id让我情何以堪[Yeah]
2012年08月16日 06点08分 16
level 15
情何以堪。。。我还是滚回.NET去搞面向对象吧[88]
2012年08月16日 08点08分 17
level 11
wucaibinfen1 楼主
纳尼没人看吗?
2012年08月16日 13点08分 18
level 10
[瞌睡] 虽然不动,但是貌似很厉害的样子
2012年08月16日 16点08分 19
吧务
level 13
Implements 原来是类继承。。。[啊!]
2012年08月16日 17点08分 20
1 2 尾页