bsp; Public Sub Display() Messagebox.Show("Name: " + name + " Age: " + str(age)) End Sub End Class
Public Class Teacher Inherits Person Private salary As Decimal Public Sub tr_SetValue( ByVal na As String, ByVal a As Integer, ByVal sa As Decimal) SetValue(na, a) salary = sa End Sub Public Sub pr() MyBase.Display() Messagebox.Show("Salary: " + str(salary)) End Sub 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 ''''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 steven As Teacher steven = New Teacher() steven.tr_SetValue("Steven", 35, 35000) steven.pr() End Sub End Class
此程序输出如下﹕ Name: Steven Age: 35 Salary: 35000
现在﹐Teacher 类别含有三个资料成员﹕ 1. name ──从Person类别继承而来。 2. age ──从Person类别继承而来。 3. salary ──自己定义的。
此外﹐也含有五个程序成员﹕ 1. SetValue() ──从Person继承而来。 2. birthYear()──从Person继承而来。 3. Display() ──从Person继承而来。 4. tr_SetValue()──自己定义的。 5. pr()──自己定义的。
由于SetValue()为 Teacher之程序成员﹐所以tr_SetValue()能直接呼叫SetValue()来设定name及age值﹔之后﹐tr_SetValue()自己设定salary之值。同理﹐pr()能直接呼叫 Display()来显示name及age之内容﹔之后﹐pr()自己输出salary之值。也许﹐您会问道﹕子类别自己定义之程序﹐是否能与父类别之程序同名称呢﹖答案是肯定的﹐而且是常见之写法。如果名称相同但是参数不一致(像参数个数不同或参数型态不同),就是父子类别之间的程序多重定义(Procedure Overloading)了,必须写上Overloads字眼。例如﹕上述程序相当于──
''''ex04.bas Imports System.ComponentModel Imports System.Drawing Imports System.WinForms ''''------------------------------------------------------------------------------------------ Class Person Private name As String Private age As Integer Public Sub New() End Sub Public Sub SetValue(ByVal na As String, ByVal a As Integer) name = na age = a End Sub Public Function birthDay() As Integer birthDay = 2001 - age End Function Public Sub Display() Messagebox.Show("Name: " + name + " Age: " + str(age)) End Sub End Class
Class Teacher Inherits Person Private salary As Decimal Public Overloads Sub SetValue( ByVal na As String, ByVal a As Integer, ByVal sa As Decimal) SetValue(na, a) salary = sa End Sub Public Sub pr() MyBase.Display() Messagebox.Show("Salary: " + str(salary)) End Sub 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 ''''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 steven As Teacher steven = New Teacher() steven.SetValue("Steven", 35, 35000) steven.pr() End Sub End Class
此程序输出如下﹕ NAME: Steven AGE : 35 Salary: 35000
此种情况﹐Teacher 类别拥有两个 SetValue()程序﹐一个由Person继承而来﹐一个是自己定义的。同时﹐也拥有两个Display()程序。此时﹐计算机如何分辨它们呢﹖计算机依据程序的参数来决定呼叫那一个程序,当您写成 steven.SetValue("Steven", 35, 35000)时,此SetValue()是子类别自己的SetValue()。而写成SetValue(na,a)时,则是由Person类别继承而来之SetValue()程序。此VB程序已定义如下之类别关系﹕
接下来﹐再为Person定义一个子类别── Student。程序如下﹕
''''ex05.bas Imports System.ComponentModel Imports System.Drawing Imports System.WinForms ''''------------------------------------------------------------------------------------------ Public Class Person Private name As String Private age As Integer Public Sub New() End Sub Public Sub SetValue(ByVal na As String, ByVal a As Integer) name = na age = a End Sub Public Function birthDay() As Integer birthDay = 2001 - age End Function Public Sub Display() Messagebox.Show("Name: " + name + " Age: " + str(age)) End Sub End Class
Public Class Teacher Inherits Person Private salary As Decimal Public Overloads Sub SetValue( ByVal na As String, ByVal a As Integer, ByVal sa As Decimal) SetValue(na, a) salary = sa End Sub Public Sub pr() MyBase.Display() Messagebox.Show("Salary: " + str(salary)) End Sub End Class
Public Class Student Inherits Person Private student_number As Integer Public Overloads Sub SetValue( ByVal na As String, ByVal a As Integer, ByVal 上一页 [1] [2] [3] [4] [5] [6] 下一页 没有相关教程
|