脚本专栏 
首页 > 脚本专栏 > 浏览文章

PowerShell面向对象编程基础知识总结

(编辑:jimmy 日期: 2024/11/26 浏览:3 次 )

本文介绍PowerShell面向对象编程的基础知识,我们知道PowerShell里面的所有变量和输出都是对象,所以有必要在进行PowerShell编程时了解一下面向对象编程的基础知识。

面向对象编程的引入主要是为了解决软件复杂化带来的维护等问题,早在20世纪60年代,面向对象就已经出现了。虽然C语言并不支持面向对象的特性,但是使用C语言进行开发的程序人员已经将面向对象的核心思想应用到其中,因此我们更应该理解的是面向对象的思想,而不需要纠缠于语言本身。

PowerShell是基于对象的脚本语言,因此下面的介绍中我们主要侧重于介绍基本概念,并不会涉及如何进行面向对象编程。通过下面知识的学习,你将会了解PowerShell中需要掌握的基本对象知识,从而深刻理解PowerShell采用基于对象的管理带来的优势。

类(Class)

为物体(或者说是对象)定义的抽象特性,这些特性包括物体的特征(它的属性、域或特性)以及物体的行为(它可以做得事情、方法或操作)。某些人会说类就像是设计图或工厂一样,用来描述某些事物的自然特性。打个比方来说,狗这个类可能包含所有狗包含的共性,例如:品种和皮毛颜色(它们都是狗的特征)、叫和坐下(它们都是狗的行为)。

对象(Object)

类的特定实例(Instance)。解释很抽象?对象可以看做是你家的狗,或者你家邻居的狗。无论如何,它们都是狗类的实例。狗类定义一部分所有狗都具有的特性,例如:三条(显然狗主人很喜欢打麻将)是一只真实存在的狗,狗类中的信息就可以用来描述三条与其他狗的不同,三条的皮毛是棕色的。我们可以知道三条被归类为犬科,是狗类的一个实例。

方法(Method)

对象的能力。三条是一条狗,它能够叫,因此叫就是三条的方法。三条也许还有其他的方法,例如:原地转圈、作揖、坐下等等。

继承 (Inheritance)

子类是一个类的特殊版本,它继承父类的属性和行为,并引入自己特有的属性和行为。

我们还是回到前面的例子讨论,狗按照品种划分有很多种,例如:黄金牧羊犬、柯利牧羊犬和吉娃娃。三条是柯利牧羊犬的实例,例如狗类中已经定了了方法叫和属性皮毛颜色。所以每一个狗类的子类都可以直接继承这些信息,不需要额外重新定义这些冗余的信息。

子类可以改变继承的特性。例如:柯利牧羊犬可能指定默认的皮毛颜色为棕色和白色。而吉娃娃子类可能默认指定方法“叫”是产生高音调的叫声。子类还允许引入新成员,例如吉娃娃子类可能引入方法“颤抖”(吉娃娃的胆子很小,所以遇到危险就会颤抖)。吉娃娃对象还有一个颤抖的方法,但是三条没有,这是因为三条是柯利牧羊犬,而不是吉娃娃。

对于类和对象而言,我们在PowerShell开发时,更多的关注它的成员,即类的属性和方法。PowerShell中的类和C#一样,有静态成员和实例成员两种。下面分别演示一下:

我们可以通过Get-Member的Static参数来列出类型的静态成员:
复制代码 代码如下:

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两个静态属性,它们指示了System.Int32类型的值域:
复制代码 代码如下:
PS C:\Users\splaybow> [int]::MaxValue
2147483647
PS C:\Users\splaybow> [int]::MinValue
-2147483648

如果没有指定Static参数,那么Get-Member会显示对象的实例方法:
复制代码 代码如下:
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...

关于PowerShell面向对象编程基础知识,本文就介绍这么多,希望对您有所帮助,谢谢!

上一篇:PowerShell中使用Like运算符配合通配符查找字符串例子
下一篇:PowerShell Contains函数查找字符串实例
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap