声明抽象方法
语法
说明
Abstract是
Virtual的特殊形式。不同的是,抽象方法没有一个正文,只是声明。本质上,这允许声明可以通过各种派生类型实现的接口。
为了调用抽象方法,它必须被派生数据类型覆盖并实现,否则程序将中止。
因此,只有实现所有抽象方法的类型才允许创建对象。出于同样的原因,构造函数不应该调用未实现的方法。
构造函数不能抽象,因为它们不能是虚拟的。此外,抽象
析构函数也不受支持,因为需要析构函数体(无论是隐式还是显式),以调用基础和字段析构函数。
摘要在C ++中被称为“纯虚拟”(与FreeBASIC不同,C ++允许纯虚拟机拥有一个主体,只能静态访问)。
注意:在多级继承中,在每个继承层次结构级别,可以将相同的命名方法(相同的标识符和签名)声明为Abstract,Virtual或normal(无说明符)。 当混合说明符时,通常的顺序是从继承层次结构的上到下的抽象 - >虚拟 - >正常。
内部多态性进程不考虑覆盖方法的访问控制(
Public/
Protected/
Private),而仅在编译时对初始调用进行考虑。
派生静态方法不能覆盖基本的虚拟/抽象方法,但可以影响任何基本方法(包括虚拟/抽象)。
例子
Type Hello extends object
Declare abstract Sub hi( )
End Type
Type HelloEnglish extends Hello
Declare Sub hi( )
End Type
Type HelloFrench extends Hello
Declare Sub hi( )
End Type
Type HelloGerman extends Hello
Declare Sub hi( )
End Type
Sub HelloEnglish.hi( )
Print "你好!"
End Sub
Sub HelloFrench.hi( )
Print "干杯!ca"
End Sub
Sub HelloGerman.hi( )
Print "您好!"
End Sub
Randomize( Timer( ) )
Dim As Hello Ptr h
For i As Integer = 0 To 9
Select Case( Int( Rnd( ) * 3 ) + 1 )
Case 1
h = New HelloFrench
Case 2
h = New HelloGerman
Case Else
h = New HelloEnglish
End Select
h->hi( )
Delete h
Next
方言差异
与QB差别
参考