本文介紹PowerShell面向?qū)ο缶幊痰幕A(chǔ)知識(shí),我們知道PowerShell里面的所有變量和輸出都是對(duì)象,所以有必要在進(jìn)行PowerShell編程時(shí)了解一下面向?qū)ο缶幊痰幕A(chǔ)知識(shí)。
面向?qū)ο缶幊痰囊胫饕菫榱私鉀Q軟件復(fù)雜化帶來(lái)的維護(hù)等問(wèn)題,早在20世紀(jì)60年代,面向?qū)ο缶鸵呀?jīng)出現(xiàn)了。雖然C語(yǔ)言并不支持面向?qū)ο蟮奶匦裕鞘褂肅語(yǔ)言進(jìn)行開(kāi)發(fā)的程序人員已經(jīng)將面向?qū)ο蟮暮诵乃枷霊?yīng)用到其中,因此我們更應(yīng)該理解的是面向?qū)ο蟮乃枷耄恍枰m纏于語(yǔ)言本身。
PowerShell是基于對(duì)象的腳本語(yǔ)言,因此下面的介紹中我們主要側(cè)重于介紹基本概念,并不會(huì)涉及如何進(jìn)行面向?qū)ο缶幊獭Mㄟ^(guò)下面知識(shí)的學(xué)習(xí),你將會(huì)了解PowerShell中需要掌握的基本對(duì)象知識(shí),從而深刻理解PowerShell采用基于對(duì)象的管理帶來(lái)的優(yōu)勢(shì)。
類(Class)
為物體(或者說(shuō)是對(duì)象)定義的抽象特性,這些特性包括物體的特征(它的屬性、域或特性)以及物體的行為(它可以做得事情、方法或操作)。某些人會(huì)說(shuō)類就像是設(shè)計(jì)圖或工廠一樣,用來(lái)描述某些事物的自然特性。打個(gè)比方來(lái)說(shuō),狗這個(gè)類可能包含所有狗包含的共性,例如:品種和皮毛顏色(它們都是狗的特征)、叫和坐下(它們都是狗的行為)。
對(duì)象(Object)
類的特定實(shí)例(Instance)。解釋很抽象?對(duì)象可以看做是你家的狗,或者你家鄰居的狗。無(wú)論如何,它們都是狗類的實(shí)例。狗類定義一部分所有狗都具有的特性,例如:三條(顯然狗主人很喜歡打麻將)是一只真實(shí)存在的狗,狗類中的信息就可以用來(lái)描述三條與其他狗的不同,三條的皮毛是棕色的。我們可以知道三條被歸類為犬科,是狗類的一個(gè)實(shí)例。
方法(Method)
對(duì)象的能力。三條是一條狗,它能夠叫,因此叫就是三條的方法。三條也許還有其他的方法,例如:原地轉(zhuǎn)圈、作揖、坐下等等。
繼承 (Inheritance)
子類是一個(gè)類的特殊版本,它繼承父類的屬性和行為,并引入自己特有的屬性和行為。
我們還是回到前面的例子討論,狗按照品種劃分有很多種,例如:黃金牧羊犬、柯利牧羊犬和吉娃娃。三條是柯利牧羊犬的實(shí)例,例如狗類中已經(jīng)定了了方法叫和屬性皮毛顏色。所以每一個(gè)狗類的子類都可以直接繼承這些信息,不需要額外重新定義這些冗余的信息。
子類可以改變繼承的特性。例如:柯利牧羊犬可能指定默認(rèn)的皮毛顏色為棕色和白色。而吉娃娃子類可能默認(rèn)指定方法“叫”是產(chǎn)生高音調(diào)的叫聲。子類還允許引入新成員,例如吉娃娃子類可能引入方法“顫抖”(吉娃娃的膽子很小,所以遇到危險(xiǎn)就會(huì)顫抖)。吉娃娃對(duì)象還有一個(gè)顫抖的方法,但是三條沒(méi)有,這是因?yàn)槿龡l是柯利牧羊犬,而不是吉娃娃。
對(duì)于類和對(duì)象而言,我們?cè)赑owerShell開(kāi)發(fā)時(shí),更多的關(guān)注它的成員,即類的屬性和方法。PowerShell中的類和C#一樣,有靜態(tài)成員和實(shí)例成員兩種。下面分別演示一下:
我們可以通過(guò)Get-Member的Static參數(shù)來(lái)列出類型的靜態(tài)成員:
復(fù)制代碼 代碼如下:
PS C:\user\splaybow> [int] | Get-Member -Static | Out-String -Width 80
TypeName: System.Int32
Name MemberType Definition
---- ---------- ----------
Equals Method static System.Boolean Equals(Object objA, Object o...
Parse Method static System.Int32 Parse(String s), static System...
ReferenceEquals Method static System.Boolean ReferenceEquals(Object objA,...
TryParse Method static System.Boolean TryParse(String s, Int32 re...
MaxValue Property static System.Int32 MaxValue {get;}
MinValue Property static System.Int32 MinValue {get;}
我們可以看到,System.Int32上有MaxValue和MinValue兩個(gè)靜態(tài)屬性,它們指示了System.Int32類型的值域:
復(fù)制代碼 代碼如下:
PS C:\Users\splaybow> [int]::MaxValue
2147483647
PS C:\Users\splaybow> [int]::MinValue
-2147483648
如果沒(méi)有指定Static參數(shù),那么Get-Member會(huì)顯示對(duì)象的實(shí)例方法:
復(fù)制代碼 代碼如下:
PS C:\Users\splaybow> [int]::MinValue | Get-Member | Out-String -Width 80
TypeName: System.Int32
Name MemberType Definition
---- ---------- ----------
CompareTo Method System.Int32 CompareTo(Int32 value), System.Int32 Comp...
Equals Method System.Boolean Equals(Object obj), System.Boolean Equa...
GetHashCode Method System.Int32 GetHashCode()
GetType Method System.Type GetType()
GetTypeCode Method System.TypeCode GetTypeCode()
ToString Method System.String ToString(), System.String ToString(IForm...
關(guān)于PowerShell面向?qū)ο缶幊袒A(chǔ)知識(shí),本文就介紹這么多,希望對(duì)您有所幫助,謝謝!