茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    VB.NET面向?qū)ο缶幊烫卣?/div>
    來源:易賢網(wǎng) 閱讀:938 次 日期:2014-08-20 10:08:16
    溫馨提示:易賢網(wǎng)小編為您整理了“VB.NET面向?qū)ο缶幊烫卣鳌?方便廣大網(wǎng)友查閱!

    Visual Basic 7也被稱作VB.NET,具備了面向?qū)ο?OOP)編程語言的所有特征。對于VB編程人員來說,面向?qū)ο蟮母拍詈兔嫦驅(qū)ο缶幊谭绞蕉疾荒吧?/P>

    如果問一個面向?qū)ο蟪绦蛟O(shè)計(jì)高手什么是面向?qū)ο蟪绦蛟O(shè)計(jì)語言?他可能會說出一大堆諸如類、接口、消息隱匿、封裝、繼承、多態(tài)性這樣的名詞,這些名詞聽起來都很酷,不是嗎?但面向?qū)ο缶幊滩⒎峭ㄟ^一兩天的學(xué)習(xí)或聽一次課就能掌握的。要真正地掌握面向?qū)ο蟪绦蛟O(shè)計(jì),不但需要掌握一定的理論知識,同時還要進(jìn)行一些實(shí)際的編程練習(xí)。本文探討了在VB.NET中運(yùn)用面向?qū)ο笤砭幊痰幕痉椒?,全面論述VB.NET中面向?qū)ο缶幊痰闹R已經(jīng)超出本文的范圍。

    面向?qū)ο缶幊痰膬?yōu)點(diǎn)

    不知道讀者是否考慮過為什么現(xiàn)代程序設(shè)計(jì)語言會向面向?qū)ο缶幊炭繑n?C++、JAVA為什么這么普及?這是因?yàn)槊嫦驅(qū)ο缶幊叹邆淞藥讉€優(yōu)點(diǎn),比如:代碼維護(hù)方便、可擴(kuò)展性好、支持代碼重用技術(shù)等等。這些優(yōu)點(diǎn)是過程編程語言所不具備的。下面我們就來談?wù)劽嫦驅(qū)ο蠹夹g(shù)的這些優(yōu)點(diǎn):

    維護(hù)簡單

    模塊化是面向?qū)ο缶幊讨械囊粋€特征。實(shí)體被表示為類和同一名字空間中具有相同功能的類,我們可以在名字空間中添加一個類而不會影響該名字空間的其他成員。

    可擴(kuò)充性

    面向?qū)ο缶幊虖谋举|(zhì)上支持?jǐn)U充性。如果有一個具有某種功能的類,就可以很快地?cái)U(kuò)充這個類,創(chuàng)建一個具有擴(kuò)充的功能的類。

    代碼重用

    由于功能是被封裝在類中的,并且類是作為一個獨(dú)立實(shí)體而存在的,提供一個類庫就非常簡單了。事實(shí)上,任何一個.NET Framework編程語言的程序員都可以使用.NET Framework類庫,.NET Framework類庫提供了很多的功能。更令人高興的是,我們可以通過提供符合需求的類來擴(kuò)充這些功能。

    下面我們最簡單的特性開始來論述面向?qū)ο缶幊痰囊恍┨匦浴?/P>

    在面向?qū)ο缶幊碳夹g(shù)中,類是重點(diǎn)中的重點(diǎn)。簡單地說,類是一種提供一定功能的數(shù)據(jù)類型。在VB.NET中定義一個類要用到關(guān)鍵字Class,例如,下面的一小段代碼就定義一個名字為Employee的類:

    Employee類

    Class Employee

    End Class

    定義一個類就是這么簡單。注意,在對類命名時,微軟推薦使用Pascal語言的命名規(guī)則。根據(jù)這種命名規(guī)則,就意味著類名的第一個字母必須大寫,并且后面的并發(fā)連結(jié)詞的第一個字母均為大寫,例如象GeneralManager、SmallDictionary、StringUtil都是合乎這種規(guī)則的類名。

    類成員

    一個類有象域、屬性、子程序和函數(shù)這些成員,例如,下面的employee類中有一個名字為work的子程序:

    包含Work方法的Employee類

    Class Employee

    Public Sub Work ()

    ' Do something here

    End Sub

    End Class

    子程序和函數(shù)都被稱為方法,方法的命名也遵循Pascal語言的命名規(guī)則。

    另一種類成員是域。域的命名法則遵循camel規(guī)則,即除第一個子串外的所有子串的第一個字母大寫。象salary和quarterlyBonus都是符合規(guī)則的域名。下面的代碼在Employee類中添加了salary和quarterlyBonus這二個域:

    增加了二個域的Employee類

    Class Employee

    Dim salary As Decimal = 40000

    Dim yearlyBonus As Decimal = 4000

    Public Sub PrintSalary()

    ' print the salary to the Console

    System.Console.Write(salary)

    End Sub

    End Class

    Module Module1

    Public Sub Main()

    Dim anEmployee As Employee

    anEmployee = New Employee()

    anEmployee.PrintSalary()

    End Sub

    End Module

    上述代碼段中的Module1模塊中提供了子程序的Main函數(shù),這也是VB.NET程序開始的地方。要編譯源程序,就必須用一種或另一種方式提供訪問Main Sub的途徑。

    如果你使用的不是Visual Studio.NET,那么可以使用vbc.exe軟件編譯VB.NET源程序,vbc.exe是在安裝.NET Framework時自動安裝的。例如,當(dāng)你把源代碼保存為Employee.vb文件后,在Employee.vb所在的目錄下,輸入vbc Employee.vb即可編譯該源程序。

    現(xiàn)在我們再來看看上面的代碼,子程序的Main函數(shù)首先定義了一個Employee類型的變量━━anEmployee:

    Dim anEmployee As Employee

    然后使用關(guān)健詞New對Employee進(jìn)行初始化:

    anEmployee = New Employee()

    這樣,我們就得到了一個Employee類型的變量,我們就可以使用它的功能了(福特汽車公司的工程師生產(chǎn)出汽車后,我們就可以啟動并駕駛它了。)。在我們的例子中,可以使用下面的方法調(diào)用PrintSalary方法:

    anEmployee.PrintSalary()

    這一方法會打印Employee中salary變量的值。

    當(dāng)然,我們也可以將子程序的Main函數(shù)移到類的定義中去,這樣就無需再使用模塊了。下面的代碼即演示了這種方法: 子程序的Main函數(shù)在類的定義中

    Class Employee

    Dim salary As Decimal = 40000

    Dim yearlyBonus As Decimal = 4000

    Public Sub PrintSalary()

    ' print the salary to the Console

    System.Console.Write(salary)

    End Sub

    Public Shared Sub Main()

    Dim employee As Employee

    employee = New Employee()

    employee.PrintSalary()

    End Sub

    End Class

    注釋:PrintSalary方法中的System.Console.Write表示我們調(diào)用了Console類中的Write方法,而Console類又是System名字空間的一部分。關(guān)于名字空間的要領(lǐng)將在下面的部分討論:

    名字空間

    在編寫.NET軟件時,我們會用到類和其他類型。為了使應(yīng)用程序更有條理性,可以將類組合為名字空間,微軟的.NET Framework類庫就是這樣的。如果打開.NET Framework SDK文檔中的.NET Framework Class Library,會看到其中有80多個名字空間,需要經(jīng)常乃至的重要的名字空間包括System、System.IO、System.Drawing、System.Windows.Forms等。例如,在Employee類的PrintSalary方法中,我們就使用了System名字空間中的Console類。

    如果要在程序中使用名字空間,可以首先導(dǎo)入它,以便在以后每次使用其成員時無需重復(fù)該名字空間的名字。例如:可以將表4、5中的代碼改寫為下面表6中形式:

    導(dǎo)入名字空間

    Imports System

    Class Employee

    Dim salary As Decimal = 40000

    Dim yearlyBonus As Decimal = 4000

    Public Sub PrintSalary()

    ' print the salary to the Console

    Console.Write(salary)

    End Sub

    Public Shared Sub Main()

    Dim employee As Employee

    employee = New Employee()

    employee.PrintSalary()

    End Sub

    End Class

    好了,我們現(xiàn)在就可以在PrintSalary方法使用Console類而無需引用名字空間,因?yàn)槲覀円呀?jīng)導(dǎo)入這個名字空間了。

    我們還可以在不同的名字空間中擁有相同名字的類。要正確地使用一個類,通常的做法是在一個類的前面使用名字空間的名字。例如,可以以System.Console的方式使用System名字空間中的Console類。

    訪問類型

    在很多情況下,我們都會將編寫好的類提供給別人,供他們使用它提供的功能,例如,他們可以調(diào)用類的一個方法或者訪問其中的一個域。面向?qū)ο缶幊痰囊粋€最大的好處是開發(fā)人員可以方便地控制對類成員的訪問,這意味著我們可以完全控制想讓別人使用的部分。我們可以使一個方法可以被別的開發(fā)人員使用,也可以使一個類成員只能在該類中被訪問。 在VB.NET中,訪問是分等級的。下面我們來討論這些等級:

    pPublic:Public類成員沒有訪問限制。在一個類成員前面添加Public關(guān)健字就使得它可以被隨意訪問。例如,Employee類中的PrintSalary方法就是一個public方法,可以從任何地方對它進(jìn)行訪問。

    Private:秘密的類成員只能被該類內(nèi)部的其他成員訪問。使用Private關(guān)健字就可以使一個類成員成為秘密的。

    Protected:被保護(hù)的類成員只能被該類的派生類和該類本身內(nèi)部進(jìn)行訪問。使用Protected關(guān)健字就可以使類成員成為被保護(hù)的類成員。

    Friend:具有friend級訪問限制的類成員只能在定義該類的程序內(nèi)部使用,使用Friend關(guān)健字就能使類成員具有friend級訪問限制。

    Protected friend:這是protected和friend二種訪問類型的組合。這些不同的訪問類型使面向?qū)ο缶幊叹哂辛诵畔㈦[慝能力。也就是說,我們可以使用這些訪問類型保護(hù)不愿意讓別人訪問的信息。

    靜態(tài)成員

    我們再來看看表4、5、6中的Employee類,也許讀者會對我們沒有將System.Console類實(shí)例化就使用它的Write有點(diǎn)不理解,為什么我們可以這樣做呢?因?yàn)樵诿嫦驅(qū)ο缶幊陶Z言中,有一種被稱作靜態(tài)成員的特殊的類成員,VB.NET也有靜態(tài)成員這一概念。

    無需對一個對象實(shí)例化就可以使用其中的靜態(tài)成員。例如,下面的表7中,SalaryLevel類中就只包含有靜態(tài)的域:

    類中的表態(tài)成員

    Class SalaryLevel

    Public Shared Level1 As Decimal = 35000

    Public Shared Level2 As Decimal = 40000

    Public Shared Level3 As Decimal = 45000

    Public Shared Level4 As Decimal = 50000

    Public Shared Level5 As Decimal = 55000

    Public Shared Level6 As Decimal = 60000

    Public Shared Level7 As Decimal = 65000

    Public Shared Level8 As Decimal = 70000

    Public Shared Level9 As Decimal = 75000

    Public Shared Level10 As Decimal = 80000

    End Class

    我們可以象表8中的程序所演示的那樣在程序中使用類:

    Listing 8: Using a static member of a class

    Imports System

    Class SalaryLevel

    Public Shared Level1 As Decimal = 35000

    Public Shared Level2 As Decimal = 40000

    Public Shared Level3 As Decimal = 45000

    Public Shared Level4 As Decimal = 50000

    Public Shared Level5 As Decimal = 55000

    Public Shared Level6 As Decimal = 60000

    Public Shared Level7 As Decimal = 65000

    Public Shared Level8 As Decimal = 70000

    Public Shared Level9 As Decimal = 75000

    Public Shared Level10 As Decimal = 80000

    End Class

    Class Employee

    Dim yearlyBonus As Decimal = 4000

    Public Sub PrintSalary()

    '使用SalaryLevel類的靜態(tài)域向Console輸出工資額

    Console.Write(SalaryLevel.Level4)

    End Sub

    Public Shared Sub Main()

    Dim employee As Employee

    employee = New Employee()

    employee.PrintSalary()

    End Sub

    End Class

    在Employee類的PrintSalary方法中,我們可以在不首先創(chuàng)建SalaryLevel類變量的情況下使用其中的靜態(tài)域Level4。不屬于靜態(tài)成員的類成員被稱作實(shí)例成員。

    構(gòu)造器

    A構(gòu)造器是類初始化所必須使用的特殊方法,在VB.NET中,這一方法被稱作New。但我們在前面的代碼中可以發(fā)現(xiàn),在類中我們沒有定義New這個方法。正是這樣,如果類中沒有定義構(gòu)造器,VB.NET將自動地創(chuàng)建一個構(gòu)造器,當(dāng)使用關(guān)健字New對對象進(jìn)行初始化時,也就調(diào)用了類的構(gòu)造器。當(dāng)然,我們也可以自己編寫對象在初始化時所運(yùn)行的代碼。

    如果我們在程序中創(chuàng)建了構(gòu)造器,VB.NET就不會再自動為該類創(chuàng)建構(gòu)造器了。

    繼承

    繼承是擴(kuò)展類的一種特性。如果需要完成一些功能,當(dāng)然可以創(chuàng)建一個新類,但如果別人所創(chuàng)建的類可以提供一部分你所需要的功能,就可以創(chuàng)建一個擴(kuò)充了原有類的新類,我們創(chuàng)建的類可以稱為子類或派生類,原來的類可以被稱為基礎(chǔ)類或父類。有時,子類和繼承也用于描述對類的擴(kuò)充。在VB.NET中,一個類只能繼承一個父類,多類繼承在VB.NET中是不允許的。

    從語法上說,在類名后加一個冒號,后面再加上關(guān)健字Inherits和父類的名字就可以完成對類的繼承。例如,下面表9中的代碼就通過擴(kuò)充Employee類創(chuàng)建了一個被稱為Manager的新類:

    擴(kuò)充類

    Imports System

    Class Employee

    Dim salary As Decimal = 40000

    Dim yearlyBonus As Decimal = 4000

    Public Sub PrintSalary()

    ' print the salary to the Console

    Console.Write(salary)

    End Sub

    End Class

    Class Manager: Inherits Employee

    End Class

    如果關(guān)健字出現(xiàn)在下一行上,則子類名后面的分號就不需要了,如下面的代碼所示:

    Class Manager

    Inherits Employee

    End Class

    現(xiàn)在,我們就可以初始化一個Manager對象,并使用Employee中的成員。如下面表10中的代碼所示:

    初始化Manager對象

    Class Employee

    Public salary As Decimal = 40000

    Public yearlyBonus As Decimal = 4000

    Public Sub PrintSalary()

    ' print the salary to the Console

    Console.Write(salary)

    End Sub

    End Class

    Class Manager: Inherits Employee

    End Class

    Module Module1

    Public Sub Main()

    Dim manager As Manager

    manager = New Manager()

    manager.PrintSalary()

    End Sub

    End Module

    下面表11中的代碼演示了如何通過編寫一個新的PrintBonus方法來擴(kuò)充Manager類別的方法:

    在子類中添加新的方法

    Class Manager: Inherits Employee

    Public Sub PrintBonus()

    Console.Write(yearlyBonus)

    End Sub

    End Class

    注意成員可訪問性限制的使用。例如,如果使yearlyBonus域具有private屬性,該哉就不能被Manager類訪問,因此,編譯這樣的代碼就會發(fā)生錯誤。

    繼承是面向?qū)ο缶幊讨谐S玫姆椒ā?shí)際上,.NETFramework類庫中就有許多由繼承其他類得到的類。例如,Windows.Forms名字空間中的Button類就是ButtonBase類的一個子類,而ButtonBase類本身又是Control類的一個子類。所有的類最終都是System.Object類的子類,在.NET Framework類庫中,System.Object類被稱為根或超級類。

    表12中的代碼演示了繼承的強(qiáng)大功能:

    擴(kuò)充System.Windows.Forms.Form

    Public Class MyForm : Inherits System.Windows.Forms.Form

    End Class

    這是一個空的類定義,在被編譯和運(yùn)行時,就會顯示一個Windows窗體??纯矗瑹o需編寫一行代碼我們就可以創(chuàng)建一個窗體,這是因?yàn)镸yForm是由System.Windows.Forms.Form繼承生成的,它繼承了Form類的功能。

    不可繼承的類

    我們可以通過使用NotInheritable關(guān)健字使自己的類不可被別人繼承。例如,表13中的Calculator就是不可繼承的:

    不可繼承的類

    NotInheritable Class Calculator

    End Class

    如果擴(kuò)充這個類就會引起編譯錯誤。為什么會使我們的類不可繼承呢?一個原因是不希望別人擴(kuò)充我們的類,另一個原因是不可擴(kuò)充的類產(chǎn)生的代碼運(yùn)行速度更快。盡管這樣,我們還是應(yīng)該小心地使用不可繼承的類,因?yàn)樗环厦嫦驅(qū)ο缶幊痰某踔裕挥性?00%地肯定不擴(kuò)充這個類時,才能使它不可繼承。

    在有些面向?qū)ο缶幊陶Z言中,這些類也被稱作最終的類。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:VB.NET面向?qū)ο缶幊烫卣?/a>
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026國考·省考課程試聽報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)