PowerShell 【オブジェクト指向編】



目次


クラス

クラスを使用した乗算処理について解説します。

プログラムソース

クラス
class MyCls {

   $X
   $Y
   $Z

   MyMethod() {
      $this.Z = $this.X * $this.Y
   }
}
メイン
.".\MyCls.ps1"

$A = New-Object MyCls

$A.X = 2
$A.Y = 3
$A.MyMethod()
Write-Host $A.Z

解説

$変数=値

メンバ変数を宣言します。

メソッド名() {
 処理
}

メソッドを宣言します。

変数 = ファイル名.クラス名

クラスのインスタンスを生成します。


コンストラクタ

コンストラクタを使用して、オブジェクト指向の特徴であるカプセル化について解説します。

プログラムソース

クラス
class MyCls {
   $X
   MyCls($Y) {
      $this.X = $Y
   }
   MyMethod() {
      Write-Host $this.X
   }
}
メイン
.".\MyCls.ps1"

$A = New-Object MyCls("コンストラクタ")

$A.MyMethod()

解説

$変数=値

ローカル変数を宣言します。

クラス名() {
 処理
}

コンストラクタを宣言します。


継承

オブジェクト指向の特徴である継承について解説します。

プログラムソース

親クラス
class ParentCls {
   ParentMethod() {
      Write-Host "親クラス"
   }
}
子クラス
class ChildCls : ParentCls {
   ChildMethod() {
      Write-Host "子クラス"
   }
}
メイン
.".\ParentCls.ps1"
.".\ChildCls.ps1"

$A = New-Object ChildCls

$A.ParentMethod()
$A.ChildMethod()

解説

class クラス名 : 継承元クラス名

クラスを継承します。


オーバーロード

オーバーロードを使用して、オブジェクト指向の特徴であるポリモーフィズムについて解説します。

プログラムソース

親クラス
class ParentCls {
   MyMethod() {
      Write-Host "親クラス"
   }
}
子クラス
class ChildCls : ParentCls {
   MyMethod($X) {
      Write-Host $X
   }
}
メイン
.".\ParentCls.ps1"
.".\ChildCls.ps1"

$A = New-Object ChildCls

$A.MyMethod()
$A.MyMethod("子クラス")

オーバーライド

オーバーライドを使用して、オブジェクト指向の特徴であるポリモーフィズムについて解説します。

プログラムソース

親クラス
class ParentCls {
   MyMethod() {
      Write-Host "親クラス"
   }
}
子クラス
class ChildCls : ParentCls {
   MyMethod() {
      Write-Host "子クラス"
   }
}
メイン
.".\ParentCls.ps1"
.".\ChildCls.ps1"

$A = New-Object ChildCls

$A.MyMethod()