真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb.net繼承關(guān)鍵字 c#繼承關(guān)鍵字

vb.net中類的繼承用什么關(guān)鍵字

Inherits

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)與策劃設(shè)計(jì),普陀網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:普陀等地區(qū)。普陀做網(wǎng)站價(jià)格咨詢:18980820575

Public Class test

Inherits System.Collections.ArrayList

End Class

vb.net的重寫和重載是什么?

我們都知道,面向?qū)ο笳Z(yǔ)言的三大特征是:封裝、繼承和多態(tài)。而重寫和重載是多態(tài)的兩種表現(xiàn)形式。多態(tài),顧名思義,就是指多種形態(tài)。而重寫和重載正好體現(xiàn)了這一點(diǎn)?,F(xiàn)在我們以 VB.NET 語(yǔ)言來說明兩者的區(qū)別。

重寫是發(fā)生在父類與子類之間的關(guān)系。具體來講就是子類可以重寫父類的現(xiàn)有的方法。它要求子類的方法名稱及參數(shù)必須與父類完全一致。比如吃飯,父親可以吃兩碗面,孩子同樣也是吃面,卻只能吃一碗。

重載則主要是發(fā)生在同一個(gè)類當(dāng)中的,它通過多個(gè)名稱相同的方法,但方法參數(shù)不相同,或者方法返回類型不相同來加以區(qū)別。其中,方法參數(shù)不相同包括以下幾種情況:參數(shù)的個(gè)數(shù)不相同,參數(shù)的類型不相同,參數(shù)的對(duì)應(yīng)位置不相同。需要說明的是,重載同樣可以應(yīng)用到父類與子類當(dāng)中。即子類重載了父類的方法。

重寫:

在 VB.NET 中,重寫汲及到的關(guān)鍵字有:

OverRidable: 在父類中聲明的可以在子類中重寫的方法。

OverRides: 在子類中聲明的要重寫父親中可重寫的方法。

MustOverRide: 在父類中,表示這個(gè)方法必須在子類中重寫。此時(shí),該類必須聲明為抽象類。

NotOverridable: 如果當(dāng)前類還有子類,那么,在其子類中,該方法不允許被重寫。

重載:

在 VB.NET 中,重載用到的關(guān)鍵是 OverLoads。

這里需要說明幾點(diǎn):

1. 對(duì)于在同一類當(dāng)中,一組名稱相同的方法或函數(shù)重載時(shí),可以加關(guān)鍵字 OverLoads 或者不加。但如果其中有一個(gè)方法加上,那同組其它方法也必須加該關(guān)鍵字。

2. 如果該方法是重載父類中的方法。那么必須加 OverLoads 關(guān)鍵字。

3. 如果兩個(gè)同名函數(shù)僅返回類型不相同,則它們不能重載,即必須在參數(shù)上有所不同。

如何在VB.NET上實(shí)現(xiàn)繼承

VB.net

Public?Class?父類

End?Class

Public?Class?子類

Inherits?父類

End?Class

我學(xué)了vb6.0,能用vb2005嗎。他們?cè)诓僮魃蠀^(qū)別大不大?控件有沒有區(qū)別?

總體來說,操作上區(qū)別不大,

都是在一個(gè)空白的窗體上面畫控件,

基本控件總體變化不大,

而且預(yù)設(shè)的控件量很多,

基本上不用再倒入其他什么玩藝兒了……

(.NET 里是沒有 ActiveX 控件這么一說的,大家平起平坐)

可是代碼的變化很大,關(guān)鍵字啊變化都挺大的……

比如,在控件方面,控件的文本屬性都是 Text,而沒有 Caption 這么一說

不過 Value 屬性依然保留。

Form 的 Show 方法被拆成了 Show 和 ShowDialog,顧名思義。

Unload 方法被 Form 的 Close 方法代替。

在對(duì)控件的事件處理方面,VB 6.0 使用方法的名稱來定義事件處理程序,

而在 .NET 中使用 Handles 語(yǔ)句來定義,

并且可以用 AddHandler 來在運(yùn)行時(shí)定義事件處理程序。

在關(guān)鍵字方面,

VB.NET 使用 Class、Module 關(guān)鍵字來標(biāo)記一個(gè)模塊,

就像 Sub、Function 一樣,

而不是以文件區(qū)分,

即一個(gè)文件里能放多個(gè)模塊。

而且 VB.NET 能夠提供完備的 OOP 支持,

較 VB6.0 相比,

可以使用 Inherit 關(guān)鍵字來實(shí)現(xiàn)類的繼承,

因此“基類”、“派生”、“重寫”不再是 C 的專利。

于是又出現(xiàn)了 MyBase 關(guān)鍵字用于表示當(dāng)前實(shí)例(Me)的基類,

在 .NET 里,和“我”有關(guān)的關(guān)鍵字包括:Me、My、MyBase、MyClass。

隨之而來的是與可繼承性有關(guān)的 Overridable、MustInherit、MustOverride、NotInheritable、NotOverridable、Protected,

與繼承相關(guān)的 Inherit、Override 關(guān)鍵字。

另外,VB.NET 支持成員重載,即使用相同的名稱與不同的參數(shù)來區(qū)分不同的成員。

而且,在 .NET 框架中,

有一個(gè)用來將不同的模塊分開的容器,命名空間(Namespace 關(guān)鍵字),使模塊井井有條,減少了命名沖突的發(fā)生。

比如內(nèi)置的各種控件都定義在System.Windows.Forms 命名空間里。

在數(shù)據(jù)類型方面,

在 .NET 框架中,所有的類型(包括繼承自 ValueType 的 String、Integer、作為各種枚舉的基類的Enum類型等)都繼承自 Object 類型,即 Object 取代了 Variant。

而 Object 有一個(gè)很方便的 ToString 函數(shù),在 CStr 不管用的時(shí)候可以用這個(gè)。

而且,在 .NET 中,考慮到程序的性能,

不建議使用后期綁定,例如:

(VB 6.0)

Dim V1 As String, V2 As String

V2 = V1 * 50

在 .NET 中,

如果文件頭部有 Option Strict [On],

或是(建議)在工程設(shè)置里打開這一選項(xiàng),

第二行就會(huì)報(bào)錯(cuò),

因?yàn)?不是適用于 String 的操作符,

而在 VB 6.0里會(huì)自動(dòng)執(zhí)行轉(zhuǎn)換,

如果是在 VB.NET,建議執(zhí)行強(qiáng)制轉(zhuǎn)換:

(VB.NET)

Dim V1 As String, V2 As String

V2 = CStr(CInt(V1) * 50)

同理,

(VB 6.0)

Dim Obj As Object

Set Obj = TextBox1

Obj.Text = “Hello World!”

第三行就會(huì)報(bào)錯(cuò),

因?yàn)?Caption 不是 Object 的屬性,

而是 TextBox 的屬性,

解決方案是,使用早期綁定:

(VB.NET)

TextBox1.Text = “Hello World!”

如果需要,可以使用:

DirectCast(Obj, TextBox).Text = “Hello World!”

與此相關(guān)的新式轉(zhuǎn)換關(guān)鍵字包括 CType、DirectCast、TryCast、CObj

盡管看起來累贅些,

但可以避免過度的隨意性。

由此,許多在 VB 6.0里不是很明朗的東西變得豁然開朗,

比如我們?cè)O(shè)計(jì)的窗體其實(shí)繼承自 Form 類,

而 Form 類又繼承自 Object,因此我們可以使用:

(VB 6.0)

Dim FormInstance As Form

Set FormInstance = New Form1

而不會(huì)報(bào)錯(cuò)。

說到這里,.

NET 不支持默認(rèn)屬性,

即:

(VB 6.0)

Command1 = “Hello World!”

等價(jià)于:

Command1.Caption = “Hello World!”

而在 .NET 中沒有 Set 關(guān)鍵詞:

(VB.NET)

Dim Ctl As Control

Ctl = Command1

只能先說到這里了……

有點(diǎn)多,

總之是 .NET 很強(qiáng)大,

過渡不是沒有可能,

但要多看 MSDN。

VB.NET窗體繼承問題

在繼承類中添加了空的事件過程,估計(jì)也會(huì)調(diào)用基類事件過程的,也就是兩個(gè)事件過程都會(huì)被調(diào)用??梢栽囋囋诶^承類構(gòu)造函數(shù)中用 RemoveHandler 語(yǔ)句能不能撤銷基類的事件過程的綁定。

另外一般的過程可以用override關(guān)鍵字隱藏基類的同名方法,比如基類調(diào)用的方法被繼承類override重寫后,就會(huì)調(diào)用繼承類的方法了。所以可以把事件處理代碼放在一普通過程中,由事件過程調(diào)用,這樣繼承類可以用空的同名方法覆蓋基類方法了。

接口的VB.NET( 一款行業(yè)軟件)接口

在VB.NET的類里,實(shí)現(xiàn)一個(gè)接口的語(yǔ)句是:

implements接口名稱

例如,下面定義一個(gè)車(總稱)的接口,這里的車是各種車的總稱:

Public Interface ICar

Property color() As String

Property speed() As Long

Sub PrintInfo()

End Interface

然后在不同類型的“車”類里實(shí)現(xiàn)它:

Public Class A_Car

Implements ICar

Dim m_color As String, m_speed As Long

Public Property color() As String Implements ICar.color

Get

Return m_color

End Get

Set(ByVal Value As String)

m_color = Value

End Set

End Property

Protected Overrides Sub Finalize()

MsgBox(I was deconstructed!)

End Sub

Public Sub New()

m_color = Red

m_speed = 210

MsgBox(I was constructed!)

End Sub

Public Property speed() As Long Implements ICar.speed

Get

Return m_speed

End Get

Set(ByVal Value As Long)

m_speed = speed

End Set

End Property

Public Sub PrintInfo() Implements ICar.PrintInfo

MsgBox(Color: m_color vbNewLine Speed: m_speed, MsgBoxStyle.Information)

End Sub

End Class

在 Form 的 Load 事件中編寫:

Dim myCar As New A_Car

myCar.PrintInfo()

運(yùn)行之后就創(chuàng)建了一個(gè) A_Car 類的實(shí)例 myCar,然后出現(xiàn)兩個(gè)對(duì)話框,分別說明實(shí)例已經(jīng)創(chuàng)建和汽車的信息。當(dāng)窗體卸載時(shí),這個(gè)類的實(shí)例 myCar 將自動(dòng)銷毀,這時(shí)將出現(xiàn)一個(gè)“I was deconstructed!”的對(duì)話框。

聲明一個(gè)接口時(shí),需要考慮以下幾點(diǎn):

1.接口主體只限于對(duì)方法,索引器以及屬性的聲明;

2.接口成員是隱式公開的,如果對(duì)其顯式指定訪問級(jí)別,就會(huì)出現(xiàn)編譯器錯(cuò)誤;

3.接口中不能包含字段,構(gòu)造函數(shù)和常量等;

4.在接口中不能實(shí)現(xiàn)任何方法,屬性或者索引器;

5.在指定方法時(shí),只需要給出返回類型,名稱和參數(shù)列表,然后分號(hào)結(jié)束。

面向?qū)ο蟮慕涌?/p>

在C++中,一個(gè)類被允許繼承多個(gè)類。但是在Java以后的語(yǔ)言不被允許。

這樣,如果想繼承多個(gè)類時(shí)便非常困難。所以開發(fā)方想出了新辦法:接口。

一個(gè)接口內(nèi),允許包含變量、常量等一個(gè)類所包含的基本內(nèi)容。但是,接口中的函數(shù)不允許設(shè)定代碼,也就意味著不能把程序入口放到接口里。由上可以理解到,接口是專門被繼承的。接口存在的意義也是被繼承。和C++里的抽象類里的純虛函數(shù)是相同的。不能被實(shí)例化。

定義接口的關(guān)鍵字是interface,例如:

publicinterfaceMyInterface{

public void add(int x,int y);

public void volume(int x,int y,int z);

}

繼承接口的關(guān)鍵字是implements,相當(dāng)于繼承類的extends。

需要注意的是,當(dāng)繼承一個(gè)接口時(shí),接口里的所有函數(shù)必須全部被覆蓋。例如:

class Demo implements MyInterface{

public void add(int x,int y){

System.out.println( +(x+y));

}

public void volume(int x,int y,int z){

System.out.println( +(x*y*z));

}

public static void main(String args[]){

Demo d=new Demo();

d.add(10,20);

d.volume(10,10,10);

}

}

輸出結(jié)果:

30

1000

當(dāng)想繼承多個(gè)類時(shí),開發(fā)程序不允許,報(bào)錯(cuò)。這樣就要用到接口。因?yàn)榻涌谠试S多重繼承(,),而類不允許。所以就要用到接口。


網(wǎng)頁(yè)名稱:vb.net繼承關(guān)鍵字 c#繼承關(guān)鍵字
標(biāo)題路徑:http://weahome.cn/article/hphcss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部