《Visual Basic.NET程序設計教程》第9章 面向對象程序設計_第1頁
《Visual Basic.NET程序設計教程》第9章 面向對象程序設計_第2頁
《Visual Basic.NET程序設計教程》第9章 面向對象程序設計_第3頁
《Visual Basic.NET程序設計教程》第9章 面向對象程序設計_第4頁
《Visual Basic.NET程序設計教程》第9章 面向對象程序設計_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第9章

面向對象程序設計本章要點:面向對象程序設計基本概念定義類和對象類的繼承類的多態(tài)性1面向對象程序設計的引入:現實世界:由對象以及對象之間的相互作用和聯(lián)系構成。反映現實世界的系統(tǒng):直接通過對象及其相互聯(lián)系來反映世界,這樣建立起來的系統(tǒng)才能符合現實世界的本來面目。面向對象程序設計:按照人們對現實世界的習慣認識和思維方式來設計和組織程序,將現實世界中的任何事物都看做是對象,通過在對象之間建立相互聯(lián)系來解決實際問題。面向對象的程序設計語言:必須有描述對象及其相互之間聯(lián)系的語言成分。29.1面向對象程序設計基本概念

1.對象(Object)對象:是現實世界中各種實體的抽象表示。對象中封裝了描述該對象的屬性(數據)和方法(行為方式),是數據和代碼的組合。屬性:描述了對象的特征。方法:決定要向哪個對象發(fā)消息、發(fā)什么消息以及收到消息時如何進行處理等。32.類(Class)和類的實例(Instance)類:對具有相同屬性和行為的一組對象的抽象。對象的屬性和方法是在定義類時被指定的。類的實例:每一個屬于某個類的特定對象稱為該類的一個實例,通常簡稱為對象。預定義類:如Button類、Label類、TextBox類等。自定義類:用戶可以定義自己的類,為它們定義屬性、方法和事件,然后利用自己定義的類創(chuàng)建相應的對象。43.封裝(Encapsulation)對象中包含了描述該對象的屬性和方法,這種技術叫做封裝。通過封裝性可以將對象的內部復雜性與應用程序的其他部分隔離開來,這樣,在程序中使用一個對象時就不必關心對象的內部是如何實現的,而每一個對象僅有若干接口為應用程序所使用。封裝使對象的內部實現與外界應用分割開來,可以有效地防止外界對對象內部的數據和代碼的破壞,也避免了程序各部分之間數據的濫用。54.繼承(Inheritance)繼承:在已有類的基礎上通過增加新特征而派生出新的類。其原有的類稱為基類或父類,而新建的類稱為派生類或子類。在繼承機制中,派生類會自動繼承其基類的屬性和方法。繼承性還可以使得在一個類上所做的改動,能夠自動反映到它的所有派生類中?;惖膬热菰谂缮愔锌梢灾苯邮褂枚槐刂匦露x,減少了軟件開發(fā)的工作量,實現了代碼的重用。65.多態(tài)(Polymorphism)在通過繼承而派生出的一系列類中,可能存在一些名稱相同但實現過程和功能不同的方法多態(tài)性有兩個方面的含義:將同一個消息發(fā)送給同一個對象,但由于消息的參數不同,對象表現出不同的行為,這種多態(tài)性是通過“重載”來實現的。將同一個消息發(fā)送給不同的對象,各對象表現出的行為各不相同,這種多態(tài)性是通過“重寫”來實現的。79.2定義類和對象

VB.NET有各種各樣的類,如Form(窗體)類、Button(命令按鈕)類、Math(數學函數)類等,這些類都是VB.NET系統(tǒng)提供的,稱為預定義類。對于預定義類,用戶不能進行修改,只能用來創(chuàng)建對象或者派生出新的類。如果預定義類不能滿足用戶的需要,則用戶也可以自己定義新的類。89.2.1定義類的語法格式簡單格式:[訪問修飾符]Class類名

類定義體EndClass說明:1)訪問修飾符:Public、Private、Protected等,用于表示類的訪問權限,如果省略“訪問修飾符”,則默認為Public。9Public:類可以在任意位置被訪問。Private:類必須在另一個類之內,且該類只能在其所在的類的內部被訪問。Protected:類必須在另一個類之內,使用Protected定義的類僅可以在其所在類的內部、或從其所在類的派生類中被訪問。2)類名:應符合標識符的命名規(guī)則。3)類定義體:用于定義類內部的成員,包括:數據成員、屬性、方法和事件。109.2.2定義類的位置1)與窗體類并列定義,例如:PublicClassForml

'窗體類定義開始…EndClass

'窗體類定義結束ClassMyClass1

'用戶自定義類開始…EndClass

'用戶自定義類結束112)在窗體類中定義類,新類嵌在原有的窗體類中,例如:PublicClassForml

'窗體類定義開始

ClassMyclass2

'用戶自定義類開始

EndClass

'用戶自定義類結束

…Endclass'窗體類定義結束123)在標準模塊中定義類,例如:ModuleModulel

'模塊定義開始…

ClassMyClass3

'用戶自定義類開始…

Endclass

'用戶自定義類結束…EndModule

'模塊定義結束134)創(chuàng)建類文件,在其中定義類使用“項目|添加類”命令,彈出“添加新項”對話框。在其中間窗格中選擇“類”,并在下面的“名稱”文本框中指定類名稱,單擊“添加”按鈕,則新建立一個類文件,并在代碼窗口中自動添加了一個空類的模板:

PublicClass

……

'在這里可以編寫類的有關代碼

EndClass一個類文件可以包含多個類,每個類都單獨使用Class和End

Class語句來定義。149.2.3定義對象如果已經定義了某個類,則可以創(chuàng)建屬于該類的對象(實例)。類本質上是一種數據類型,用類創(chuàng)建一個對象,實際上就是聲明一個屬于該類類型的變量。定義對象的常見語法格式:

{Dim|Private|Public}對象變量名[As[New]類名][(參數表)][=表達式]15說明:1)Dim、Private、Public的含義與普通變量聲明中的含義相同。2)“類名”可以是預定義的類(如Form類、TextBox類、Button類、Math類等),也可以是用戶自己定義的類。3)使用New關鍵字表示要創(chuàng)建一個類的實例。如果省略New關鍵字,則表示聲明了屬于某種類的變量,而不創(chuàng)建類的實例。4)參數表:創(chuàng)建類的實例所需要的參數。參數的個數、類型由類的構造函數決定。也可以沒有參數表,這時可以省略小括號。16例:設已經創(chuàng)建了一個名稱為student的類,使用以下方法可以創(chuàng)建該類的實例,即創(chuàng)建對象student1。①使用沒有參數的構造函數創(chuàng)建對象student1:

Dimstudent1AsNewstudent()

或寫成:

Dimstudent1=Newstudent()

或寫成:

Dimstudent1Asstudent

student1=Newstudent()

或寫成:

Dimstudent1Asstudent=Newstudent()17②用帶參數的構造函數創(chuàng)建對象student2:

Dimstudent2AsNewstudent("Tom")

或寫成:

Dimstudent2=Newstudent("Tom")

或寫成:

Dimstudent2Asstudent

student2=Newstudent("Tom")

或寫成:

Dimstudent2Asstudent=Newstudent("Tom")185)可以定義對象數組例:DimC(9)AsMyClass1則數組C的所有元素都是MyClass1對象類型例:對每一個數組元素創(chuàng)建一個對象的實例

錯誤寫法:

DimC(9)AsNewMyClass1

正確寫法:

DimC(9)AsMyClass1

Fori=0To9

C(i)=NewMyClass1

Nexti196)訪問對象成員一般格式:

對象變量名.成員名注意:被訪問的成員必須在類中被聲明為Public訪問權限,因為只有這種類型的成員才能在類的外部被訪問。例:DimButton2AsNewButton

Button2.Text="退出"209.2.4定義數據成員類中的數據成員用于存儲有關的數據,表示對象的狀態(tài)和特征,也稱為字段變量。數據成員通常在類的開始部分定義,在類的內部使用,就像局部變量一樣。定義數據成員的基本語法格式:{Public|Private|Dim}數據成員名

As數據類型=[初始值]21說明:使用Private或Dim定義的數據成員只能在類內部被訪問使用Public定義的數據成員可以在應用程序的任何部分被訪問,但一般情況下不在類中聲明Public類型的數據成員?!?初始值”:對該成員進行初始化。22例如:PublicClassStudent

Private

SnoAsString'學號

Private

SnameAsString'姓名

PrivateScoreAsSingle'成績EndClass239.2.5定義屬性簡單格式:[訪問修飾符][屬性修飾符][ReadOnly|WriteOnly]Property屬性名(形參表)As類型

Get

語句組EndGet

Set(ByVal形參名As

數據類型)

語句組EndSetEndProperty24說明:1)訪問修飾符:指定屬性的訪問權限??梢允荘ublic、Private、Protected等,省略時默認為Public。2)屬性修飾符:可以是Overloads、Overrides、Overridable等。(見9.4節(jié))。3)Get…EndGet部分用于定義獲取屬性值的操作。如果沒有此部分,則該屬性為只寫屬性,這時在Property語句中需要注明WriteOnly。4)Set…EndSet部分用于定義設置屬性值的操作。如果沒有此部分,則該屬性為只讀屬性,這時在Property語句中需要注明ReadOnly。25例:以下是一個典型的屬性定義格式Dim變量名As數據類型

'定義私有變量PublicProperty屬性名()As數據類型GetReturn變量名

'將變量的值作為屬性值返回EndGet

Set(ByValValueAs數據類型)

變量名

=Value'用Value的值設置屬性值EndSetEndProperty注意:變量的數據類型必須與屬性的數據類型相同。26【例9-1】創(chuàng)建一個矩形類Rectangle,定義Width和Height兩個屬性。編寫代碼實現,運行時,單擊“寫入屬性”按鈕用文本框中輸入的內容設置一個Rectangle對象的Width和Height屬性;單擊“讀出屬性”按鈕用另外兩個文本框顯示該對象的Width和Height屬性。Button1Button2TextBox1TextBox2TextBox3TextBox4界面設計:27代碼設計:1)在代碼窗口的PublicClassForm1之后輸入以下代碼,創(chuàng)建Rectangle類。

PublicClassRectangle

'定義矩形類

DimWAsInteger'變量w用于存儲寬度屬性

DimHAsInteger'變量H用于存儲高度屬性

'定義寬度屬性

PublicPropertyWidth()AsInteger

GetReturnWEndGet

Set(ByValValueAsInteger)W=ValueEndSetEndProperty

28'定義高度屬性

PublicPropertyHeight()AsIntegerGetReturnHEndGet

Set(ByValValueAsInteger)H=ValueEndSet

EndPropertyEndClass292)創(chuàng)建一個屬于Rectangle類的對象,即在以上代碼之后繼續(xù)輸入語句:

Dimc1AsNewRectangle3)編寫B(tài)utton1_Click事件過程實現屬性的設置:

PrivateSubButton1_Click(…)HandlesButton1.Click

c1.Width=Val(TextBox1.Text)

c1.Height=Val(TextBox2.Text)

EndSub4)編寫B(tài)utton2_Click事件過程實現屬性的讀?。?/p>

PrivateSubButton2_Click(…)HandlesButton2.Click

TextBox3.Text=c1.Width

TextBox4.Text=c1.Height

EndSub302.自動實現的屬性使用“自動實現的屬性”功能可以快速定義類的屬性,而無需編寫Get過程和Set過程例如,為例9-1的Rectangle類定義屬性:PublicClassRectangle

'定義寬度屬性PublicPropertyWidthAsInteger

'定義高度屬性PublicPropertyHeightAsIntegerEndClass31通過自動實現的屬性,可在一行中聲明一個包含默認值的屬性。例:PublicClassRectanglePublicPropertyWidthAsInteger=100PublicPropertyHeightAsInteger=200EndClass雖然自動實現的屬性使用方便,但在某些情況下不能使用。例如,如果要在設置一個電話號碼屬性值之前,驗證電話號碼是否包含合法的數字,則需要在Set過程中添加相關的判斷代碼,這種情況下就必須自己編寫Set過程。329.2.6定義方法方法是封裝在類內部的完成特定操作的過程,它代表由該類所生成的對象所具有的行為特征。創(chuàng)建方法實際上就是在類中編寫若干Sub過程或Function過程。聲明的格式和以前在窗體中聲明Sub過程或Function過程類似,只不過在窗體中定義的Sub過程或Function過程屬于窗體類,而現在定義的Sub過程或Function過程屬于自己定義的類。類的方法也稱為類的成員函數。331.用Sub過程實現沒有返回值的方法:[訪問修飾符][過程修飾符]Sub方法名([形參表])…EndSub2.用Function過程實現有返回值的方法:[訪問修飾符][過程修飾符]Function方法名([形參表])AS數據類型

…EndSub說明:1)訪問修飾符:指定所定義的方法的訪問權限??梢允荘ublic、Private、Protected等,默認為Public。2)過程修飾符:可以是Overloads、Overrides、Overridable等(9.4節(jié)介紹)34【例9-2】給例9-1創(chuàng)建的Rectangle類定義一個計算矩形面積的方法是Area(),并測試使用該方法計算矩形的面積。界面設計:Button1Button2TextBox1TextBox2TextBox5Button3TextBox3TextBox435代碼設計:1)向Rectangle類中添加方法Area。PublicClassRectangle'定義矩形類

…'這里省略了例9-1定義屬性的代碼

PublicFunctionArea()AsIntegerReturnW*HEndFunctionEndClass2)在Button3.Click事件過程中調用Area方法計算面積PrivateSubButton3_Click(…)HandlesButton3.ClickTextBox5.Text=c1.AreaEndSub369.2.7定義事件1.定義事件的步驟:1)在類中聲明一個事件,格式如下:[Public|Private|Protected]Event事件名稱([形參表])說明:Public、Private、Protected:指定該事件可以被訪問的范圍。省略時默認為是Public。形參表:是事件用來傳遞數據的參數,也可以沒有參數。372)在類中的某個方法中,使用RaiseEvent語句激發(fā)事件,格式如下:

RaiseEvent

事件名稱([實參表])說明:事件名稱:指要被引發(fā)的事件名稱。該事件必須是已經使用步驟1)聲明的事件實參表:指事件發(fā)生時需要傳遞的實際參數。實際參數的類型、個數要與1)中所聲明的事件的形式參數的類型、個數保持一致。382.使用類中定義的事件1)用WithEvents關鍵字聲明一個對象:

DimWithEvents

對象名AsNew類名2)為對象響應該事件編寫相應的事件過程,事件過程時,通常以“對象名_事件名”作為事件過程的名稱,并以“Handles”關鍵字來指定此過程所要處理的是哪一個事件,其語法格式如下:

PrivateSub對象名_事件名(參數列表)Handles對象名.事件名39【例9-3】在例9-2定義的Rectangle類中,定義一個InvalidData事件,當使用Area方法計算的面積小于0時,引發(fā)該事件,并返回面積0。然后編寫c1_InvalidData事件過程實現:當計算的面積小于0時,用消息框給出提示。代碼設計:1)在Rectangle類中,使用Event語句聲明事件InvalidData;在Rectangle類中的Area方法中,使用RaiseEvent語句引發(fā)InvalidData事件,則定義Rectangle類的代碼如下:40PublicClassRectangle'定義矩形類

DimWAsInteger

'變量w用于存儲寬度屬性

DimHAsInteger

'變量H用于存儲高度屬性

…'這里省略了定義寬度和高度屬性的代碼

PublicEventInvalidData()'聲明事件InvalidData

PublicFunctionArea()AsInteger'定義方法Area

IfW*H<0Then

RaiseEvent

InvalidData()

'引發(fā)InvalidData事件

Return0

Else

ReturnW*H

EndIf

EndFunction

EndClass412)將對象c1改成用WithEvents關鍵字聲明:

DimWithEventsc1AsNewRectangle

3)編寫對象c1_InvalidData的事件過程:

PrivateSubc1_InvalidData()Handlesc1.InvalidData

MsgBox("出現了非法面積,將面積作為0看待")

EndSub429.2.8構造函數和析構函數1.構造函數在創(chuàng)建一個對象的同時,可以為其數據成員提供初值,對該對象進行初始化。對象的初始化是由類中的一個特殊的成員函數完成的,這個成員函數稱為構造函數。在類中定義構造函數的一般格式如下:PublicSubNew([形參表])…EndSub43說明1)構造函數的名稱必須是New,且必須是一個訪問權限為Public的Sub過程。2)可以在類中定義多個參數不同而名稱都為New的構造函數。在創(chuàng)建對象時,系統(tǒng)會根據參數的類型及個數選擇調用相應的構造函數完成對象的初始化。3)在創(chuàng)建對象時,系統(tǒng)會自動調用構造函數,而不能像在程序中調用普通函數那樣顯式地調用構造函數。44PublicClassRectangle'定義矩形類

DimWAsInteger'變量w用于存儲寬度屬性

DimHAsInteger'變量H用于存儲高度屬性

'定義構造函數

PublicSubNew(ByVal

aAsInteger,ByVal

bAsInteger)W=aH=bEndSub……'定義寬度屬性和高度屬性EndClass【例9-4】在例9-3的基礎上,為Rectangle類創(chuàng)建一個構造函數。

以下代碼創(chuàng)建對象c1,并將其Width屬性和Height屬性初始化為10和20:DimWithEventsc1AsNewRectangle(10,20)45每個類必須有一個構造函數,沒有構造函數就不能創(chuàng)建對象。如果在類中沒有顯式定義構造函數,則系統(tǒng)會自動為該類生成一個默認的構造函數,格式如下:

PublicSubNew()EndSub該默認構造僅負責創(chuàng)建對象,不做任何初始化工作。如果在類中已經顯式定義過任何形式的構造函數,系統(tǒng)就不再生成默認的構造函數了。因此,常需要在類中再人為增加一個沒有參數的構造函數2.默認構造函數46PublicClassRectangle'定義矩形類

DimWAsInteger

DimHAsInteger

'定義帶參數的構造函數

PublicSubNew(ByValaAsInteger,ByValbAsInteger)W=aH=bEndSub'定義不帶參數的構造函數

PublicSubNew()EndSub……'定義寬度和高度屬性EndClass例:473.析構函數對象可以被創(chuàng)建,也可以被銷毀。當創(chuàng)建一個對象時,系統(tǒng)自動為它分配資源。當銷毀對象時,系統(tǒng)自動收回所分配的資源。在對象的生存周期結束時,系統(tǒng)將自動調用析構函數完成對象的銷毀。析構函數是一個名為Finalize的Sub過程,用戶可以在自定義類中重載Finalize完成對象的銷毀工作。VB2005及更高版本允許使用另一析構函數Dispose,可以在任何時候顯式調用該函數來立即釋放資源。48*9.3類的繼承在面向對象的程序設計中,可以在已有類的基礎上通過增加新特征而派生出新的類,這種機制稱為繼承。在繼承關系中,被繼承的類稱為基類或父類,而通過繼承關系定義出來的新類則稱為派生類或子類。499.3.1派生類的定義格式:[訪問修飾符]Class派生類名

Inherits基類名

…EndClass說明:1)Inherits語句必須緊跟在Class語句的后面。2)派生類繼承了基類中除構造函數和析構函數之外的全部成員,各成員的訪問方式由其在基類中定義時所使用的訪問修飾符(如Public、Private、Protected等)來決定。509.3.2派生類的構造函數派生類繼承了基類中除構造函數和析構函數之外的全部成員,若需要對派生類對象進行初始化,則需要定義新的構造函數,并且該構造函數負責調用基類的構造函數,以完成基類的有關成員的初始化工作。定義派生類的構造函數的一般格式如下:PublicSubNew(派生類構造函數總形參表)

MyBase.New(基類構造函數形參數)

派生類數據成員的初始化EndSub51說明:1)關鍵字MyBase表示的是當前派生類的基類,MyBase.New(…)表示調用基類的構造函數并對基類的有關數據成員進行初始化。2)“派生類構造函數總形參表”中的參數必須包括既能完成對派生類的數據成員初始化,又能完成對其基類的數據成員初始化的全部參數,也就是說,MyBase.New(基類構造函數形參表)中的“基類構造函數形參表”的參數來自“派生類構造函數總形參表”。52【例9-5】定義一個表示點的類Point,然后在Point類的基礎上派生出一個表示圓的類Circle,并編寫有關的程序進行測試。界面設計:53PublicClassForm1PrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.ClickDimPAsNewPoint(10,20)'定義點類對象pDimCAsNewCircle(30,40,10)'定義圓類對象cLabel1.Text="點P的坐標為("&P.橫坐標

&","&P.縱坐標

&")"Label2.Text="圓C的圓心坐標為("&C.橫坐標

&","&C.縱坐標

&"),半徑為"&C.半徑

EndSubEndClass代碼設計:54PublicClassPoint'定義點類

PrivateXAsSingle'X用于保存橫坐標屬性

PrivateYAsSingle'Y用于保存縱坐標屬性

'定義有參數的構造函數PublicSubNew(ByVal

px,ByVal

py)X=pxY=pyEndSub

'定義無參數的構造函數PublicSubNew()EndSub55

'定義屬性“橫坐標”

PublicProperty橫坐標()AsSingleGetReturnX'返回橫坐標EndGet

Set(ByValvalueAsSingle)X=value

'設置橫坐標EndSetEndProperty56

'定義屬性“縱坐標”

PublicProperty縱坐標()AsSingle

GetReturnY'返回縱坐標EndGet

Set(ByValvalueAsSingle)Y=value'設置縱坐標EndSetEndPropertyEndClass57PublicClassCircle'定義派生類CircleInheritsPoint'指定Circle的基類為PointPrivateRAsSingle'R用于保存圓的半徑

'定義有參數的構造函數PublicSubNew(ByVal

cxAsSingle,ByVal

cyAsSingle,ByVal

crAsSingle)

MyBase.New(cx,cy)'調用基類的構造函數R=cr

'對派生類的成員R初始化EndSubPublicSubNew()'定義無參數的構造函數EndSub58

'定義屬性“半徑”

PublicProperty半徑()AsSingle

GetReturnR'返回半徑REndGet

Set(ByValvalueAsSingle)R=value'設置半徑REndSetEndPropertyEndClass59

運行效果:單擊窗體空白處,則分別在Label1和Label2標簽中輸出Point類的對象P和Circle類的對象C的有關數據成員的值。如下圖:60*9.4類的多態(tài)性多態(tài)性是面向對象程序設計的另一個重要特征。類的多態(tài)性可以通過重載和重寫來實現。9.4.1重載(Overloads)重載是指在類中存在多個同名的屬性或方法的定義,但這些同名的屬性或方法的參數個數或參數的類型不同。重載有以下兩種情況:611)在同一個類中出現屬性或方法的重載。這時,在定義屬性或方法時,可以加上修飾符Overloads,也可以不加,但只要其中有一個屬性或方法加上了修飾符Overloads,其他所有的重載屬性或方法的定義中也必須都加上Overloads。62例如:PublicClassAddClassPublicOverloadsFunction

ad(ByValxAsInteger,

ByValyAsInteger)Returnx+y

EndFunctionPublicOverloadsFunction

ad(ByValxAsString,ByValyAsString)Returnx&y

EndFunctionEndClass63假設在某命令按鈕的Click事件過程如下:PrivateSubButton1_Click(…)HandlesButton1.ClickDimc1AsNewAddClassDebug.Print(c1.ad(2,3))Debug.Print(c1.ad("2","3"))EndSub運行時單擊Button1,在即時窗口打?。?/p>

5

232)在派生類中重載從基類繼承來的屬性或方法時,需要在派生類中的相應屬性和方法的定義中加上修飾符Overloads。649.4.2重寫(Overrides)派生類繼承了基類的屬性和方法之后,往往需要對繼承來的屬性和方法進行改寫或擴充,這就是重寫。重寫與重載不同,重寫要求重寫的方法或屬性與被重寫的方法或屬性的名稱、參數個數、參數類型完全相同。重寫要求在基類中定義屬性或方法時加上修飾符Overridable,表示該方法或屬性可以在派生類中被重寫;同時在派生類中相應的方法或屬性的定義中要加上修飾符Overrides,表示對基類的屬性或方法進行了重寫。65【例9-6】在例9-5的Circle類中,增加一個求圓的面積的方法Area,在Circle類的基礎上派生出一個表示球的類Ball,在Ball類中對Circle類的Area方法進行重寫,求球的表面積。編寫有關代碼進行測試。界面設計:66代碼設計:1)在Circle類中添加求圓的面積的方法area:PublicClassCircle'定義派生類Circle…

'定義求圓的面積的方法area,并允許重寫PublicOverridableFunctionarea()

ReturnMath.PI*R^2'返回圓的面積

EndFunctionEndClass672)定義派生類Ball,定義求球的表面積的方法area,實現對其父類Circle中的area方法的重寫。PublicClassBall'定義派生類BallInheritsCircle'指定Ball的父類為CirclePublicSubNew(ByVal

cxAsSingle,ByValcyAsSingle,ByVal

crAsSingle)

MyBase.New(cx,cy,cr)EndSubPublicSubNew()EndSub

'對父類的area方法進行重寫,求球的表面積PublicOverridesFunctionarea()

Return4*Math.PI*MyBase.半徑^2EndFunctionEndClass683)在Form1_Click事件過程中增加定義Ball類的對象B,并添加相關代碼顯示各對象的成員值:PrivateSubForm1_Click(…)HandlesMe.ClickDimPAsNewPoint(10,20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論