封裝就是把各種方法和變量合并到一個類,用這個類代表某個對象為完成一定的任務(wù)所能保存的范圍以及它能執(zhí)行的操作。
繼承就是根據(jù)現(xiàn)有類的方法和成員變量生成新的類的功能
多態(tài)就是對象隨著程序執(zhí)行而使其形式發(fā)生改變的能力。
抽象就是在暫時忽略對象的具體細節(jié)的功能。
在類中,構(gòu)造器的方法使簡化類的成員變量的初始化處理,當用繼承從一個類構(gòu)造另一個類的時候,會有兩套構(gòu)造器發(fā)生作用,即基類構(gòu)造器和派生類構(gòu)造器
例如:
public class form1
inherits system.windows.forms.form
#region " windows 窗體設(shè)計器生成的代碼 "
#end region
class base
public sub new()
msgbox("base class running")
end sub
end class
class derived
inherits base
public sub new()
msgbox("derived class running")
end sub
end class
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
dim s as new derived
end sub
end class
如果基類構(gòu)造器不需要參數(shù),派生類執(zhí)行的時候,vb.net自動調(diào)用基類構(gòu)造器,但是如果基類構(gòu)造器要求參數(shù),那么派生類就必須顯式調(diào)用基類構(gòu)造器,同時向基類構(gòu)造器傳遞相應(yīng)的參數(shù)。
因為所有的類都使用方法new作為構(gòu)造器名,所以派生類就不能簡單的調(diào)用方法new,vb.net無法確定需要調(diào)用那個new方法,在派生類調(diào)用方法new時,必須在前面加上關(guān)鍵字mybase,如:mybase.new
在派生類構(gòu)造器中,調(diào)用基類構(gòu)造器的語句必須放在第一行,否則產(chǎn)生語法錯誤,如果不需要參數(shù),可以省略,但為了提高代碼的可讀性,一般還是顯式的調(diào)用mybase.new
繼承和析構(gòu)器方法
vb.net不能象調(diào)用基類構(gòu)造器函數(shù)那樣自動調(diào)用基類析構(gòu)器,如下例:
public class form1
inherits system.windows.forms.form
#region " windows 窗體設(shè)計器生成的代碼 "
#end region
class a
public sub new()
msgbox("class a new")
end sub
protected overrides sub finalize()
msgbox("class a finalize")
end sub
end class
class b
inherits a
public sub new()
msgbox("class b new")
end sub
protected overrides sub finalize()
msgbox("class b finalize")
mybase.finalize()
end sub
end class
class c
inherits b
public sub new()
msgbox("class c new")
end sub
protected overrides sub finalize()
msgbox("class c finalize")
mybase.finalize()
end sub
end class
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
dim s as new c
end sub
end class
.net環(huán)境中的所有類都是從system.object類派生來的,在覆蓋基類函數(shù)和子例程的時候必須把overrides放在方法的定義中,在派生類覆蓋基類定義之前,基類也必須聲明它的方法定義是可覆蓋的,即在方法定義中放入關(guān)鍵字overrides,這種能夠被派生類覆蓋的方法叫虛擬函數(shù)。
新聞熱點
疑難解答
圖片精選