抽象类与接口紧密相关,它们不能示例化,并且常常部分实现或根本不实现。抽象类和接口之间的一个主要差别是:类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承。从抽象类派生的类仍可实现接口。可以在创建组件时使用抽象类,因为它们使您得以在某些方法中指定不变级功能,但直到需要该类的特定实现之后才实现其他方法。抽象类也制定版本,因为如果在派生类中需要附加功能,则可以将其添加到基类而不中断代码。
在 Visual Basic 中,抽象类用 MustInherit 关键字表示。在 C# 中,则使用 abstract 修饰符。任何所谓不变的方法都可以编码至基类中,但在 Visual Basic 中,任何要实现的方法都用 MustOverride 修饰符标记。在 C# 中,这些方法标记为 abstract。
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
'定义一个抽象类
Public MustInherit Class Employee
Public MustOverride Sub display(ByVal x As Double)
End Class
'子类继承抽象类
Public Class EmployeeDate
Inherits Employee
Dim tax As Double
Public Overrides Sub display(ByVal x As Double)
tax = x * 0.08
MsgBox("你的税收是:" & tax)
End Sub
End Class
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim obj As EmployeeDate = New EmployeeDate
obj.display(5000000)
End Sub
End Class