集成分为两种形式:一种是实现的继承(代码的继承)、一种是行为的继承(接口的集成)。
VB和COM一脉相承,继承接口就是继承行为,所以说VB不能继承是冤枉她了。你一定要用VB来实现代码的继承,他应该是做不到的。但是如果有老兄说只有代码的继承才是真正的继承,我会站出来反对的。第一个问题,因为你的两个父类有同名同形式的方法,用VC试试也应该是不可以的。
VB和COM一脉相承,继承接口就是继承行为,所以说VB不能继承是冤枉她了。你一定要用VB来实现代码的继承,他应该是做不到的。但是如果有老兄说只有代码的继承才是真正的继承,我会站出来反对的。第一个问题,因为你的两个父类有同名同形式的方法,用VC试试也应该是不可以的。
可以说是一个伪OOP
VB可以封装功能逻辑,这一点没有人反对吧;
VB可以继承接口,这也是继承。
VB对接口的继承也为对态提供了可能。
所以没有理由说VB不能OOP。PS:OO和多线程有什么关系。最说VB并不是不能支持多线程,而是不能够像C那么方便。
yefm(百聊) 的观点不对。OOP的三个要素:继承、封装、多态。
VB可以封装功能逻辑,这一点没有人反对吧;
VB可以继承接口,这也是继承。
VB对接口的继承也为对态提供了可能。
所以没有理由说VB不能OOP。PS:OO和多线程有什么关系。最说VB并不是不能支持多线程,而是不能够像C那么方便。
one too left
another too right(antonym of left)
1、在Class3中实现class12、在class2中聚合class1,然后在class3中继承class2,不过这样你就没有办法使用多太的特性。因为class2和class1的接口是不一样的。
public sub baseSub()
end sub
然后添加两个类模块,类名称分别定位impclass以及lmpclass2,然后在类的代码窗口中写入:
lmplements baseclass '继承特性
上面这行代码说明类lmpclass以及lmpclass2实现类baseclass。
在lmpclass窗口中加入以下代码
private sub baseclass_basesub()
end sub
private sub baseclass_basesub()
endsub
不过看不懂不要怪我忘了什么出版社……好像是电力吧??
VB不支持继承,多态,多线程.什么是继承?
PB体现得最完美,
什么对象几乎都可以继承层次感非常好!什么是多态?
看看VC里继承的类结构及其虚函数,那才是多态.VB只是一工具,RAD工具而已,还没有多线程的概念,
做出来的是结构化的OOP工程而已.但是可以做的很快.
--从这儿讲还是很好用的!
建立的类是支持继承的。下面是范例: 首先建立一个新工程,然后添加一个新的类模块(Class Module),类名称设定为BaseClass。
然后在BaseClass中加入以下代码: Public Sub BaseSub() '虚拟特性,BaseSub在子类中实现 End Sub 然后添加两个类模块,类名称分别设定为ImpClass以及ImpClass2,然后在类的代码窗口中写入:
Implements BaseClass '继承特性
上面这行代码说明类ImpClass以及ImpClass2实现类BaseClass。
在ImpClass窗口中加入以下代码:
Private Sub BaseClass_BaseSub() '实现基类中的BaseSub方法
MsgBox "Hello. This is Imp. inherited from BaseClass"
End Sub 在ImpClass2中加入以下代码:
Private Sub BaseClass_BaseSub()
MsgBox "Hello. This is Imp2. inherited from BaseClass"
End Sub 完成了上面的类代码后,打开Form1,在上面添加一个CommandButton,在按钮的Click事件中
写入以下代码: Dim xImp As New ImpClass
Dim xIMp2 As New ImpClass2
Dim xBase As BaseClass Set xBase = xImp '多态特性
xBase.BaseSub
Set xBase = xIMp2
xBase.BaseSub
Set xBase = Nothing Set xImp = Nothing
Set xIMp2 = Nothing
运行程序,点击CommandButton,程序会先后弹出消息框,显示在ImpClass以及ImpClass2中
设定的消息。
从上面的代码中可以看到VB中是如何实现面向对象的特性:继承、虚拟以及多态的。只是同
诸如Java、C++、Object Pascal不同,VB将很多实现的细节隐藏了起来。
问:如何屏蔽掉窗体中的关闭按钮X?
答:可以使用API函数将窗体菜单中的 关闭 项灰掉,因为菜单同关闭按钮是关联的,这样关闭
按钮也会不可用。具体代码如下: Option Explicit Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Private Declare Function EnableMenuItem Lib "user32" _
(ByVal hMenu As Long, ByVal wIDEnableItem As Long, _
ByVal wEnable As Long) As Long Const SC_CLOSE = &HF060 Private Sub Form_Load()
Dim hMenu As Long hMenu = GetSystemMenu(Me.hwnd, 0)
RemoveMenu hMenu, &HF060, &H200&
Debug.Print EnableMenuItem(hMenu, SC_CLOSE, 1)
End Sub