国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

vb.net類的封裝,繼承,多態(tài),抽象之一

2024-07-10 13:00:39
字體:
供稿:網(wǎng)友
 

封裝就是把各種方法和變量合并到一個類,用這個類代表某個對象為完成一定的任務(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ù)。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 万载县| 临桂县| 新营市| 固原市| 阜康市| 安泽县| 奉节县| 平谷区| 华安县| 措美县| 玛纳斯县| 昂仁县| 资源县| 舒城县| 五寨县| 青海省| 阳春市| 阜平县| 贵港市| 阳城县| 正阳县| 滦平县| 海门市| 邵东县| 五指山市| 安康市| 威宁| 绥棱县| 綦江县| 阳谷县| 平昌县| 赤壁市| 五大连池市| 博乐市| 延津县| 和硕县| 盘锦市| 厦门市| 南召县| 宜都市| 德化县|