Chapter4/4.9_Class/PSDrive/TestClass.psm1

class HogeBase {
  [string]$Name = "fuga"
  [int]$Age = 1

  HogeBase([string]$name) {
    $this.Name = $name
  }
}

class Hoge : HogeBase {
  Hoge([string]$name) : base($name) {
    $this.Name = $name
  }

  Hoge([string]$name, [int]$age) : base($name) {
    $this.Name = $name
    $this.Age = $age
  }
}

class Planet {
  [string]$Name

  Planet() {

  }

  Planet([string]$name) {
    $this.Name = $name
  }

  [object[]] GetChildItem() {
    return @()
    #return @(Get-Moon -PlanetName $this.Name)
  }
}

class Earth : Planet {
  static [string]$PlanetName = "Earth"

  Earth () {
    $this.Name = [Earth]::PlanetName
  }

  Earth([string]$name) : base($name) {
    $this.Name = $name
  }
}


function Get-Hoge {
  return [Hoge]::new("hoge")
}

function Get-Hoge2 {
  return [Hoge]::new("hoge", 3)
}

function Get-Planet {
  return [Planet]::new("planet")
}

function Get-Earth {
  return [Earth]::new()
}

function Get-Earth2 {
  return [Earth]::new("hoge")
}

Export-ModuleMember -Function Get-Hoge, Get-Hoge2, Get-Planet, Get-Earth, Get-Earth2