VB.Net中文教程(9) 重新定义(Overriding)程序
点击次数:48 次 发布日期:2008-11-06 08:07:33 作者:源代码网
|
源代码网推荐 源代码网推荐 源代码网推荐?????????? 内容 ?????????? 源代码网推荐v 1. 重新定义程序 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐1. 重新定义(Override)程序 源代码网推荐 源代码网推荐 在应用上﹐常见如下之情况﹕子类别从父类别继承之程序﹐并不合乎子类别之需要。此时可设计新程序取代之。 源代码网推荐 源代码网推荐 源代码网推荐 图1、程序成员之重新定义 源代码网推荐 源代码网推荐 例如﹐SalesPerson类别含有Bonus()程序﹔SalesManager由 SalesPerson继承而得Bonus()程序。Bonus()能计算销售人员之红利。然而﹐一般销售员与销售经理之红利计算方法不同﹔所以﹐SalesPerson之Bonus()显然并不适用于SalesManager。这SalesManager类别必须定义适用的Bonus()求算销售经理之红利。子类别不满意继承之程序而自行定义程序取代之﹐此情形称为「再定义」(Redefinition)或「重新定义」(Overriding)。自行定义程序与继承程序之名称相同。请看个程序﹕ 源代码网推荐 源代码网推荐"ex01.bas 源代码网推荐Imports System.ComponentModel 源代码网推荐Imports System.Drawing 源代码网推荐Imports System.WinForms 源代码网推荐"----------------------------------------------------------------------------------------- 源代码网推荐Class SalesPerson 源代码网推荐 Protected totalSales As Double 源代码网推荐 Public Sub New(ByVal t As Double) 源代码网推荐 totalSales = t 源代码网推荐 End Sub 源代码网推荐 Public Overridable Function Bonus() As Double 源代码网推荐 Bonus = totalSales * 0.008 源代码网推荐 End Function 源代码网推荐End Class 源代码网推荐 源代码网推荐Class SalesManager 源代码网推荐 Inherits SalesPerson 源代码网推荐 Public Sub New(ByVal t As Double) 源代码网推荐 MyBase.New(t) 源代码网推荐 End Sub 源代码网推荐 Public Overrides Function Bonus() As Double 源代码网推荐 Bonus = totalSales * 0.008 1000 源代码网推荐 End Function 源代码网推荐End Class 源代码网推荐"---------------------------------------------------------------------------------------- 源代码网推荐Public Class Form1 源代码网推荐 Inherits System.WinForms.Form 源代码网推荐 源代码网推荐 Public Sub New() 源代码网推荐 MyBase.New() 源代码网推荐 Form1 = Me 源代码网推荐 "This call is required by the Win Form Designer. 源代码网推荐 InitializeComponent() 源代码网推荐 "TODO: Add any initialization after the InitializeComponent() call 源代码网推荐 End Sub 软件开发网 www.mscto.com 源代码网推荐 "Form overrides dispose to clean up the component list. 源代码网推荐 Public Overrides Sub Dispose() 源代码网推荐 MyBase.Dispose() 源代码网推荐 components.Dispose() 源代码网推荐 End Sub 源代码网推荐#Region " Windows Form Designer generated code " 源代码网推荐 ....... 源代码网推荐#End Region 源代码网推荐 Protected Sub Form1_Click( ByVal sender As Object, ByVal 源代码网推荐 e As System.EventArgs) 源代码网推荐 Dim Jim As New SalesPerson(50000) 源代码网推荐 Messagebox.Show("Jim"s Bonus: " str(Jim.Bonus())) 源代码网推荐 Dim Tom As New SalesManager(45000) 源代码网推荐 Messagebox.Show("Tom"s Bonus: " str(Tom.Bonus())) 源代码网推荐 End Sub 源代码网推荐End Class 源代码网推荐 源代码网推荐此程序输出如下﹕ Jim"s bonus: 400 源代码网推荐 Tom"s bonus: 1360 源代码网推荐 源代码网推荐 因Jim为SalesPerson类别之对象﹐则Jim.Bonus()所指的是SalesPerson之Bonus()程序。SalesManager类别继承此Bonus()﹐且自己定义新的Bonus()程序。此新程序取代了继承之程序。因之﹐Alvin.Bonus()是指SalesManager自己定义之Bonus()程序。 源代码网推荐 源代码网供稿. |
