use*_*714 2 vb.net abstract-class
如果我有一个名为 A 的类和一个名为 B 的类,如果 B 继承了 A,则意味着 A 是超类,B 是子类。我被要求描述为什么 A 类不是抽象类,但在我看来,A 类是抽象类 A,因为它是为 B 类创建的以供将来使用,是否与 B 类有关?能够访问 A 类中的字段,尽管它们默认是私有的?
A类看起来像这样
Public Class A
StartDate As Date
Men As Integer
Place As String
Public Sub New()
StartDate = Today
Men = 0
Place = ""
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
B类看起来像这样
Public Class B inherits Class A
Grade As ExamGrade
Public Sub New()
MyBase.New
StartDate = Today
Men = 0
Place = ""
Grade = 'Easy'
End Sub
Public Function setGrade(grade As String)
ExamGrade = grade
End Function
End Class
Run Code Online (Sandbox Code Playgroud)
为了抽象,类 A 必须有MustInherit关键字。
Abstract( MustInherit) 表示该类仅用作基类,不能使用New. 它还允许您声明MustInherit没有实现的抽象( ) 成员,即没有方法体。继承类然后必须覆盖抽象成员并提供实现,除非它们本身是抽象的(然后派生类的第三级将提供实现)。
请注意,您可以调用抽象成员。在运行时,将调用实际实现类的实现。
请参阅:MustInherit (Visual Basic)
如果没有另外指定,成员是私有的。将它们指定Protected为允许后代类看到它们或Public允许“每个人”看到它们。
Public MustInherit Class A
Protected StartDate As Date
Protected Men As Integer
Protected Place As String
Public Sub New()
StartDate = Today
Men = 0
Place = ""
End Sub
End Class
Public Class B
Inherits A
Public Grade As String
Public Sub New()
MyBase.New() 'This initializes StartDate, Men and Place
Grade = "Easy"
End Sub
Public Sub SetGrade(ByVal grade As String)
Me.Grade = grade
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11517 次 |
| 最近记录: |