声明子类继承自某个基类。
语法
说明
例子
Type SchoolMember 'Represents any school member'
Declare Constructor ()
Declare Sub Init (ByRef _name As String, ByVal _age As Integer)
As String Name
As Integer age
End Type
Constructor SchoolMember ()
Print "初始化学校成员"
End Constructor
Sub SchoolMember.Init (ByRef _name As String, ByVal _age As Integer)
This.name = _name
This.age = _age
Print "名称:"; This.name; "年龄:"; This.age
End Sub
Type Teacher Extends SchoolMember 'Represents a teacher derived from SchoolMember'
Declare Constructor (ByRef _name As String, ByVal _age As Integer, ByVal _salary As Integer)
As Integer salary
Declare Sub Tell ()
End Type
Constructor Teacher (ByRef _name As String, ByVal _age As Integer, ByVal _salary As Integer)
Print "初始化教师"
This.Init(_name, _age) 'implicit access to base member procedure'
This.salary = _salary
End Constructor
Sub Teacher.Tell ()
Print "薪水:"; This.salary
End Sub
Type Student Extends SchoolMember 'Represents a student derived from SchoolMember'
Declare Constructor (ByRef _name As String, ByVal _age As Integer, ByVal _marks As Integer)
As Integer marks
Declare Sub Tell ()
End Type
Constructor Student (ByRef _name As String, ByVal _age As Integer, ByVal _marks As Integer)
Print "初始化学生"
This.Init(_name, _age) 'implicit access to base member procedure'
This.marks = _marks
End Constructor
Sub Student.Tell ()
Print "分数:"; This.marks
End Sub
Dim As Teacher t = Teacher("MRSK斯里韦德亚", 40, 30000)
t.Tell()
Print
Dim As Student s = Student("Swaroop", 22, 75)
s.Tell()
'使用所有八个继承关键字的示例:
' 'Extends', 'Base.', 'Base()', 'Object', 'Is' operator, 'Virtual', 'Abstract', 'Override'
Type root Extends Object ' 'Extends'通过继承预定义的Object类型激活RTTI
Declare Function ObjectHierarchy () As String
Declare Abstract Function ObjectRealType () As String ' 'Abstract'声明没有本机的功能
'这必须被覆盖
Dim Name As String
Declare Virtual Destructor () ' 'Virtual' declares destructor with body ('Abstract'禁止)
Protected:
Declare Constructor () '以避免用户从根建立
Declare Constructor (ByRef rhs As root) ''以避免用户从根目录复制
End Type '派生类型可能是成员数据为空
Constructor root ()
End Constructor
Function root.ObjectHierarchy () As String
Return "对象(forRTTI)< - 根"
End Function
Virtual Destructor root ()
Print "根析构函数"
End Destructor
Type animal Extends root ' 'Extends'继承根
Declare Constructor (ByRef _name As String = "")
Declare Function ObjectHierarchy () As String
Declare Virtual Function ObjectRealType () As String Override ' 'Virtual'用本地声明函数
'身体可以被覆盖
' 'Override'检查功能是否正确
'好超越
Declare virtual Destructor () Override ' 'Virtual'声明与当地的身体的析构函数
' 'Override'检查析构函数是否很好
End Type
Constructor animal (ByRef _name As String = "")
This.name = _name
End Constructor
Function animal.ObjectHierarchy () As String
Return Base.ObjectHierarchy & "< - 动物" ' 'Base.'允许访问父成员函数
End Function
Virtual Function animal.ObjectRealType () As String
Return "动物"
End Function
Virtual Destructor animal ()
Print "动物破坏者:" & This.name
End Destructor
Type dog Extends animal ' 'Extends'继承动物
Declare Constructor (ByRef _name As String = "")
Declare Function ObjectHierarchy () As String
Declare Function ObjectRealType () As String Override ' 'Override'检查功能是否良好
'覆盖
Declare Destructor () Override ' 'Override'检查析构函数是否很好
End Type '派生类型可能是成员数据为空
Constructor dog (ByRef _name As String = "")
Base(_name) ' 'Base()'允许调用父构造函数
End Constructor
Function dog.ObjectHierarchy () As String
Return Base.ObjectHierarchy & " - 狗" ' 'Base.'允许访问父成员函数
End Function
Function dog.ObjectRealType () As String
Return "狗"
End Function
Destructor dog ()
Print "狗破坏者:" & This.name
End Destructor
Type cat Extends animal ' 'Extends'继承动物
Declare Constructor (ByRef _name As String = "")
Declare Function ObjectHierarchy () As String
Declare Function ObjectRealType () As String Override ' 'Override'检查功能是否良好
'覆盖
Declare Destructor () Override ' 'Override'检查析构函数是否很好
End Type '派生类型可能是成员数据为空
Constructor cat (ByRef _name As String = "")
Base(_name) ' 'Base()'允许调用父构造函数
End Constructor
Function cat.ObjectHierarchy () As String
Return Base.ObjectHierarchy & "< - 猫" ' 'Base.'允许访问父成员函数
End Function
Function cat.ObjectRealType () As String
Return "猫"
End Function
Destructor cat ()
Print "猫破坏者:" & This.name
End Destructor
Sub PrintInfo (ByVal p As root Ptr) '必须放在动物类型,狗型和猫型之间
Print "" & p->Name, "" & p->ObjectRealType, "";
If *p Is dog Then ' 'Is'允许检查与类型符号的兼容性
Print Cast(dog Ptr, p)->ObjectHierarchy
ElseIf *p Is cat Then ' 'Is'允许检查与类型符号的兼容性
Print Cast(cat Ptr, p)->ObjectHierarchy
ElseIf *p Is animal Then ' 'Is'允许检查与类型符号的兼容性
Print Cast(animal Ptr, p)->ObjectHierarchy
End If
End Sub
Print "名称:", "对象(实际):层次结构:"
Dim a As root Ptr = New animal("老鼠")
PrintInfo(a)
Dim d As root Ptr = New dog("伙伴")
PrintInfo(d)
Dim c As root Ptr = New cat("虎")
Printinfo(c)
Print
Delete a
Delete d
Delete c
方言差异
与QB差别
参考