LoginSignup
1
1

More than 1 year has passed since last update.

Go言語で説明する「ポリモーフィズム」について

Posted at

はじめに

ポリモーフィズムとは、メッセージが複数の形式で表示される能力です。ポリモーフィズムは、オブジェクト指向プログラミングの重要な特徴の1つとされ、実行時またはコンパイル時に達成することができます。Golangは軽量オブジェクト指向言語であり、インターフェースを通じてのみポリモーフィズムをサポートしています。

Go言語では、主にインターフェースを使用してポリモーフィズムが実現されます。インタフェースに定義された関数を実装する型は、インタフェースとして定義された型になります。これがGoでポリモーフィズムを実現可能にするプロパティです

説明

ポリモーフィズムを実現するために、Goではインタフェースが使用されます。以下は、ポリモーフィズムの例です。

package main

import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Woof!"
}

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow"
}

type Cow struct {}

func (c Cow) Speak() string {
    return "Moo"
}

func main() {
    animals := []Animal{Dog{}, Cat{}, Cow{}}
    for _, animal := range animals {
        fmt.Println(animal.Speak())
    }
}

この例では、Animalインタフェースが定義されており、Speak()メソッドを持っています。Dog、Cat、およびCow構造体はすべて、このメソッドを実装しています。そのため、これらの構造体はすべてAnimal型として扱うことができます。

最後に、forループ内で各動物のSpeakメソッドが呼び出されます。これにより、「Woof!」、「Meow」、「Moo」という異なる出力が得られます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1