抽象クラスの定義と使用方法

Go言語には抽象クラスの概念はないが、インターフェースを使って抽象クラスに似た機能を実現できる。

抽象クラスを定義するには、インターフェイスを作成し、その中で実装する必要があるメソッドを宣言できます。インターフェイスのメソッドには実際の実装コードは含まれません。例:

type Animal interface {
    Sound() string
    Eat(food string)
}

上に示したコードでは、Animal というインターフェイスを定義しており、Sound() と Eat() の 2 つのメソッドを宣言しています。これらのメソッドは、このインターフェイスを実装した具体的な型によって実装されます。

抽象クラスを使用するには、そのインターフェースを実装した具象型を作成する必要があります。例えば、Animal インターフェースのメソッドを実装する Cat という構造体を作成できます。

type Cat struct {
    Name string
}

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

func (c Cat) Eat(food string) {
    fmt.Printf("%s is eating %s\n", c.Name, food)
}

上のコードで、Catという構造体を作り、Animalインターフェースで宣言されたSound()とEat()という2メソッドを実装しました。

抽象クラスを今すぐ利用しましょう。たとえば、

func main() {
    animal := Cat{Name: "Kitty"}
    fmt.Println(animal.Sound()) // 输出:Meow
    animal.Eat("fish")          // 输出:Kitty is eating fish
}

上記のコードは、Catクラスのインスタンスを作成して、抽象メソッドのSoundとEatを実装しています。

ゴー言語にはネイティブな抽象クラスの概念はありませんが、インタフェースを使用することで同様の機能を実現できます。インタフェースを宣言し、具象クラスでそのメソッドを実装することで、抽象クラスのコンセプトをエミュレートできます。

bannerAds