新的簡易設定(assignment)語法
Visual Basic.NET 提供新的簡易設定語法,當程式碼撰寫如下時
MyVal = 10
MyVal += 10
這時 MyVal 的值為 20 ,程式碼等於
MyVal = MyVal + 10
繼承(Inheritance)
Visual Basic.NET 現今是一個完整的物件導向(Object Orient)語言,也就是完整支援封裝、繼承、多型等等程式撰寫的方式,並提供建構/解構子。所以它增加了以往 Visual Basic 在這一方面所缺乏的功能,如繼承。
Visual Basic.NET 增加的繼承讓你可以其他的 Class 為基礎來建立新的 Class,衍生的(Derived) Class 可以繼承(inherit)和延伸原始 Class 的屬性和方法。雖然衍生的 Class 只能繼承自單一的基礎(base) Class,但它可以實做(implement)無限數目的介面(interface)。衍生的 Class 也可以撰寫新的方法 override 繼承下來的方法,所有 Visual Basic.NET 建立的 Class 預設都是可以被繼承的。
繼承和介面讓你可以實做多型(polymorphism),讓不同的 class 可以重新定義相同名稱的屬性和方法。多型是物件導向(object-orient)程式設計的基礎,因為它讓你可以呼叫相同名稱的方法,而不管在使用的當下是哪一種型態的物件。例如給一個 NormalPayroll 的基礎 class,多型讓程式設計師可以定義多個衍生 Class 不同的 PayEmployee 方法。其他的屬性和方法可以相同的方式使用衍生物件的 PayEmployee 方法,而不管是用到哪一個衍生的物件。
Visual Basic.NET 提供下列的語句來定義和支援繼承
- Inherits 語句 -- 定義當下 Class 要繼承的 Class(也稱為基礎 class)。通常可以透過屬性視窗(properties window)來設定。
- NotInheritable 定義子 -- 防止使用者將該 Class 當作基礎 class 來使用
- MustInherit 定義子 -- 定義該 class 不能用來建立 instance,唯一使用它的方式是繼承它。
衍生的 class 可以新的實做方式 override 一些繼承來的方法。Visual Basic.NET 使用下列的定義子來控制方法和屬性的 overriding
- Overridable -- 讓屬性和方法在繼承的 Class 可以 override
- Overrides -- 定義要 override 哪一個基礎的屬性或方法
- NotOverridable(預設) -- 防止屬性或方法被繼承的 class override
- MustOverride -- 要求繼承的 class 一定要 override 該屬性或方法
程式碼範例如下 Imports System
Namespace MyNamespace Class Payroll
Overridable Function PayEmployee(ByVal HoursWorked As Single, ByVal PayRate As Single)
PayEmployee = HoursWorked * PayRate
End Function
End Class Class BonusPayroll
Inherits Payroll
Overrides Function PayEmployee(ByVal HoursWorked As Single, ByVal PayRate As Single)
PayEmployee = (HoursWorked * PayRate) * 1.45 ' 45% 紅利
End Function
End Class Module
MyModule Sub Main()
Dim BonusPayrollItem As Bonuspayroll = New Bonuspayroll
Dim PayrollItem As Payroll = New Payroll
Dim PayRate As Single = 14.75
Dim HoursWorked As Single = 40
Console.WriteLine("Normal pay is: " & Pay(PayrollItem, HoursWorked, PayRate))