问个关于继承的问题(VB2005)
Public Class a
Public Overridable Function GetMyName() As String
Return "基类 "
End Function
End Class
Public Class b
Inherits a
Public Overrides Function GetMyName() As String
Return "子类 "
End Function
Public Overridable Function GetMyBassName() As String
Return MyBase.GetMyName
End Function
Public Overridable Function GetMyClassName() As String
Return MyClass.GetMyName
End Function
End Class
Public Class c
Inherits b
Public Overrides Function GetMyName() As String
Return "b的子类 "
End Function
End Class
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim qq As New c
End Sub
End Class
对于以上代码,我有以下疑问:
1:class c继承class b,当我在form1中实力化一个c类,并切调用GetMyBassName()和GetMyClassName()的时候,这两个方法是在 Class c 中执行的,还是在 Class b中执行的?
其实关键就在于“调用”这两个字的含义,调用说的是:
引用父类中的方法,但是 方法 放在父类中执行,
还是:
引用父类中的方法,但是此方法是放在本类(也就是引用这个方法的那个类)中执行的?
这个问题对我很重要!
希望高人能给我一个明确的答复,我在VB2005中实验里多次,但是几乎没什么答案!
在此先谢谢各位热心人!
[解决办法]
其实多态也很简单,按我的经验,解答你的问题:
1。如果不是虚函数,转成什么类型,就调用哪个类型的成员函数
2。如果是虚函数,不管转成什么类型,调用new的时候,new出什么类型,就永远调用那个类型的成员函数。
还要知道原因,那就要了解一下虚函数指针的概念了。没时间写了。有需要再回答。