中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

VB.NET面向對象編程特征
來源:易賢網 閱讀:1369 次 日期:2014-12-02 15:21:25
溫馨提示:易賢網小編為您整理了“VB.NET面向對象編程特征”,方便廣大網友查閱!

Visual Basic 7也被稱作VB.NET,具備了面向對象(OOP)編程語言的所有特征。對于VB編程人員來說,面向對象的概念和面向對象編程方式都不陌生。

如果問一個面向對象程序設計高手什么是面向對象程序設計語言?他可能會說出一大堆諸如類、接口、消息隱匿、封裝、繼承、多態性這樣的名詞,這些名詞聽起來都很酷,不是嗎?但面向對象編程并非通過一兩天的學習或聽一次課就能掌握的。要真正地掌握面向對象程序設計,不但需要掌握一定的理論知識,同時還要進行一些實際的編程練習。本文探討了在VB.NET中運用面向對象原理編程的基本方法,全面論述VB.NET中面向對象編程的知識已經超出本文的范圍。

面向對象編程的優點

不知道讀者是否考慮過為什么現代程序設計語言會向面向對象編程靠攏?C++、JAVA為什么這么普及?這是因為面向對象編程具備了幾個優點,比如:代碼維護方便、可擴展性好、支持代碼重用技術等等。這些優點是過程編程語言所不具備的。下面我們就來談談面向對象技術的這些優點:

維護簡單

模塊化是面向對象編程中的一個特征。實體被表示為類和同一名字空間中具有相同功能的類,我們可以在名字空間中添加一個類而不會影響該名字空間的其他成員。

可擴充性

面向對象編程從本質上支持擴充性。如果有一個具有某種功能的類,就可以很快地擴充這個類,創建一個具有擴充的功能的類。

代碼重用

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

下面我們最簡單的特性開始來論述面向對象編程的一些特性。

在面向對象編程技術中,類是重點中的重點。簡單地說,類是一種提供一定功能的數據類型。在VB.NET中定義一個類要用到關鍵字Class,例如,下面的一小段代碼就定義一個名字為Employee的類:

Employee類

Class Employee

End Class

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

類成員

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

包含Work方法的Employee類

Class Employee

Public Sub Work ()

' Do something here

End Sub

End Class

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

另一種類成員是域。域的命名法則遵循camel規則,即除第一個子串外的所有子串的第一個字母大寫。象salary和quarterlyBonus都是符合規則的域名。下面的代碼在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函數,這也是VB.NET程序開始的地方。要編譯源程序,就必須用一種或另一種方式提供訪問Main Sub的途徑。

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

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

Dim anEmployee As Employee

然后使用關健詞New對Employee進行初始化:

anEmployee = New Employee()

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

anEmployee.PrintSalary()

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

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

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表示我們調用了Console類中的Write方法,而Console類又是System名字空間的一部分。關于名字空間的要領將在下面的部分討論:

名字空間

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

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

導入名字空間

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

好了,我們現在就可以在PrintSalary方法使用Console類而無需引用名字空間,因為我們已經導入這個名字空間了。

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

訪問類型

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

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

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

Protected:被保護的類成員只能被該類的派生類和該類本身內部進行訪問。使用Protected關健字就可以使類成員成為被保護的類成員。

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

Protected friend:這是protected和friend二種訪問類型的組合。這些不同的訪問類型使面向對象編程具有了信息隱慝能力。也就是說,我們可以使用這些訪問類型保護不愿意讓別人訪問的信息。

靜態成員

我們再來看看表4、5、6中的Employee類,也許讀者會對我們沒有將System.Console類實例化就使用它的Write有點不理解,為什么我們可以這樣做呢?因為在面向對象編程語言中,有一種被稱作靜態成員的特殊的類成員,VB.NET也有靜態成員這一概念。

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

類中的表態成員

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類的靜態域向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方法中,我們可以在不首先創建SalaryLevel類變量的情況下使用其中的靜態域Level4。不屬于靜態成員的類成員被稱作實例成員。

構造器

A構造器是類初始化所必須使用的特殊方法,在VB.NET中,這一方法被稱作New。但我們在前面的代碼中可以發現,在類中我們沒有定義New這個方法。正是這樣,如果類中沒有定義構造器,VB.NET將自動地創建一個構造器,當使用關健字New對對象進行初始化時,也就調用了類的構造器。當然,我們也可以自己編寫對象在初始化時所運行的代碼。

如果我們在程序中創建了構造器,VB.NET就不會再自動為該類創建構造器了。

繼承

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

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

擴充類

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

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

Class Manager

Inherits Employee

End Class

現在,我們就可以初始化一個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方法來擴充Manager類別的方法:

在子類中添加新的方法

Class Manager: Inherits Employee

Public Sub PrintBonus()

Console.Write(yearlyBonus)

End Sub

End Class

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

繼承是面向對象編程中常用的方法。實際上,.NETFramework類庫中就有許多由繼承其他類得到的類。例如,Windows.Forms名字空間中的Button類就是ButtonBase類的一個子類,而ButtonBase類本身又是Control類的一個子類。所有的類最終都是System.Object類的子類,在.NET Framework類庫中,System.Object類被稱為根或超級類。

表12中的代碼演示了繼承的強大功能:

擴充System.Windows.Forms.Form

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

End Class

這是一個空的類定義,在被編譯和運行時,就會顯示一個Windows窗體。看看,無需編寫一行代碼我們就可以創建一個窗體,這是因為MyForm是由System.Windows.Forms.Form繼承生成的,它繼承了Form類的功能。

不可繼承的類

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

不可繼承的類

NotInheritable Class Calculator

End Class

如果擴充這個類就會引起編譯錯誤。為什么會使我們的類不可繼承呢?一個原因是不希望別人擴充我們的類,另一個原因是不可擴充的類產生的代碼運行速度更快。盡管這樣,我們還是應該小心地使用不可繼承的類,因為它不符合面向對象編程的初衷,只有在100%地肯定不擴充這個類時,才能使它不可繼承。

在有些面向對象編程語言中,這些類也被稱作最終的類。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:VB.NET面向對象編程特征
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
黑人操亚洲美女惩罚| 国产精品视频一二三| 欧美亚洲免费| 久久国产精品久久精品国产| 狼人社综合社区| 国产精品a久久久久| 激情伊人五月天久久综合| 一区二区三区欧美日韩| 久久亚洲国产成人| 国产精品每日更新| 亚洲欧洲午夜| 久久久久久久网站| 欧美日韩在线电影| 伊人久久婷婷| 欧美一区二区观看视频| 欧美日本中文| 激情亚洲网站| 午夜日韩av| 欧美日韩另类一区| 亚洲国产成人精品久久久国产成人一区 | 亚洲一区二区三区高清不卡| 欧美在线综合| 欧美视频一区在线| 最新国产成人在线观看| 欧美在线三级| 国产精品久久久久久模特| 亚洲麻豆视频| 久久国产精品99久久久久久老狼| 欧美日韩成人综合| 亚洲三级视频在线观看| 免费观看在线综合| 精久久久久久| 久久久久久穴| 国产在线乱码一区二区三区| 亚洲欧美日韩综合aⅴ视频| 欧美三区在线| 一二三区精品| 欧美日韩精品| 99国产精品一区| 欧美激情导航| 亚洲精品少妇| 欧美日本久久| 亚洲美女毛片| 欧美欧美天天天天操| 亚洲欧洲综合| 欧美精品91| 亚洲精品一区二| 欧美激情中文不卡| 亚洲人成在线观看网站高清| 美日韩丰满少妇在线观看| 亚洲第一区中文99精品| 美女久久一区| 亚洲国产精品日韩| 欧美精品久久久久久久免费观看 | 亚洲欧美日韩另类| 国产精品久久久久久久久久直播 | 欧美私人网站| 国产精品99久久久久久www| 欧美三级第一页| 亚洲欧美激情视频| 国产一区二区三区日韩| 久久人人97超碰国产公开结果| 国外成人在线视频网站| 久久人人97超碰人人澡爱香蕉| 樱桃成人精品视频在线播放| 免费不卡欧美自拍视频| 亚洲免费电影在线观看| 国产精品v欧美精品v日本精品动漫| 亚洲社区在线观看| 国产伦理精品不卡| 久久人人97超碰人人澡爱香蕉| 亚洲国产一区在线| 欧美色精品天天在线观看视频| 亚洲一区中文| 精品电影在线观看| 欧美日韩18| 欧美中文字幕在线播放| 亚洲黄色在线观看| 国产精品久久久久影院亚瑟| 久久国产精品久久精品国产| 亚洲日本电影| 国产精品视频自拍| 免费的成人av| 亚洲主播在线播放| 伊大人香蕉综合8在线视| 欧美日韩国产成人精品| 性久久久久久| 亚洲精品社区| 国产午夜精品理论片a级探花| 美日韩丰满少妇在线观看| 一区二区欧美国产| 激情五月婷婷综合| 国产精品成人在线观看| 久久综合色播五月| 亚洲欧美卡通另类91av| 亚洲人成网在线播放| 国产精品日韩一区二区| 欧美aⅴ一区二区三区视频| 亚洲伊人网站| 最新国产精品拍自在线播放| 国产麻豆精品theporn| 欧美激情亚洲另类| 久久九九热免费视频| 在线一区二区三区四区五区| 狠狠干综合网| 欧美性做爰毛片| 免费成人小视频| 欧美在线视频一区| 一区二区日韩| 亚洲精品国产精品国自产在线| 国产伦精品一区二区| 欧美日韩日本网| 欧美xxx成人| 久久久久免费观看| 午夜精品视频在线观看一区二区| 日韩亚洲精品电影| 亚洲国产精品一区在线观看不卡| 国产人久久人人人人爽| 欧美午夜精品理论片a级按摩 | 久久精品一区二区三区四区| 亚洲视频自拍偷拍| 亚洲精品国产精品乱码不99| 原创国产精品91| 国产一区二区主播在线| 国产精品五区| 国产精品腿扒开做爽爽爽挤奶网站| 欧美精品一区视频| 欧美成人蜜桃| 欧美顶级艳妇交换群宴| 欧美成人三级在线| 欧美ab在线视频| 欧美成人a∨高清免费观看| 久久一区视频| 久久久综合激的五月天| 久久久久久一区二区三区| 久久久久国产一区二区| 久久久精品国产免大香伊| 久久久久国产一区二区| 久久久一区二区三区| 榴莲视频成人在线观看| 免费短视频成人日韩| 美女性感视频久久久| 欧美成人国产一区二区| 欧美精品999| 欧美日韩国产综合新一区| 欧美日韩在线一区二区三区| 欧美日韩国产小视频在线观看| 欧美日韩在线免费视频| 欧美日韩一区三区四区| 国产精品久久久久久久午夜| 国产精品亚洲综合久久| 国产在线欧美日韩| 在线观看成人av电影| 亚洲美女电影在线| 中日韩男男gay无套| 亚洲性视频网址| 欧美在线999| 免播放器亚洲一区| 欧美日韩国语| 国产精品美女999| 国产亚洲成精品久久| 亚洲国产高清一区二区三区| 亚洲乱亚洲高清| 亚洲欧美日韩精品久久| 久久久亚洲午夜电影| 欧美精品一区二区三区很污很色的 | 黄色精品一区二区| 亚洲电影免费观看高清完整版在线观看| 亚洲国产精品小视频| 夜色激情一区二区| 午夜视频在线观看一区二区| 久久久免费精品| 欧美日韩国产综合一区二区| 国产美女诱惑一区二区| 亚洲成人在线观看视频| 亚洲一区二区三区免费视频| 欧美在线free| 欧美日韩国产麻豆| 国产专区精品视频| 亚洲精品乱码久久久久久蜜桃91 | 欧美精品乱码久久久久久按摩| 国产精品日韩一区二区| 亚洲国产日韩精品| 亚洲欧美日韩国产一区二区| 欧美**人妖| 国产日韩欧美日韩| 日韩视频不卡中文| 久久xxxx| 欧美视频成人| 在线精品高清中文字幕| 亚洲在线免费视频| 欧美激情乱人伦| 国产一区二区日韩精品| 正在播放欧美一区| 欧美777四色影视在线| 国产精品毛片a∨一区二区三区|国| 在线成人中文字幕| 香蕉久久夜色精品| 欧美日本三级| 亚洲国产日韩欧美一区二区三区|