「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > なぜ伝統的な継承をサポートしないのか?

なぜ伝統的な継承をサポートしないのか?

2024 年 11 月 8 日に公開
ブラウズ:759

 Why Doesn\'t Go Support Traditional Inheritance?

Go の継承

Go はなぜ従来の型継承をサポートしないのですか?

従来のサブクラスが 1 つ以上の親クラスの定義を継承する型の継承は、Go プログラミングの機能ではありません。 language.

作成者の理論的根拠

Go FAQ の中で、言語作成者は、オブジェクト指向プログラミング言語では、自動的に推論できる型間の関係の定義を重視することが多いと説明しています。囲碁で。 Go の型は、型の関係を明示的に指定する代わりに、そのメソッドのサブセットを指定するインターフェイスを自動的に満たします。

Go のアプローチの利点

このアプローチには、いくつかの利点があります。

  • 簡易簿記: 型を明示的に宣言する必要はありません関係。
  • インターフェイスの柔軟性: 型は複数のインターフェイスを同時に満たすことができ、従来の多重継承の複雑さを回避できます。
  • 軽量インターフェイス: インターフェイスは次のことができます。メソッドが 1 つまたはゼロであるため、追加の型アノテーションを必要とせずに有用な概念を表現できます。
  • 柔軟性変更点: インターフェイスを事後追加できるため、元の型を変更せずに新しいアイデアやテストに柔軟に対応できます。
  • 型階層の欠如: 型間の明示的な関係が欠如しているため、型階層を管理または議論する必要性。

代替案Principle

Go は、継承ではなく合成の原則を推進します。これには、継承を使用して親型のすべての機能を備えた新しい型を作成するのではなく、既存の型を合成して新しい型を作成することが含まれます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3