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