'' 所有方法(除了構造函數)都可以是虛擬的,
'' 允許它們在運行時被子類重寫
''
'' 基類
type ClassA extends object
declare virtual sub hello( )
end type
sub ClassA.hello( )
print "hello from A"
end sub
'' 子類
type ClassB extends ClassA
declare sub hello( )
end type
sub ClassB.hello( )
print "hi from B"
end sub
'' 測試儀,可以給任何類對象的子類
sub test( byval p as ClassA ptr )
p->hello( )
end sub
var a = new ClassA
var b = new ClassB
test( a )
test( b )
delete b
delete a
建議虛擬的少些,一般都是用抽象的
抽象允許占坑不拉屎,虛的話,必須有一個值,一般來說,用來給基礎類預留接口
比如定義一個空的類,這個類會被三個接口相同但功能不同的東西集成,就用抽象把接口預留
例如 UI、游戲對象
很常用,也可以用來處理事件
把事件留作抽象函數,定義新空間寫一個實現就行了這樣