C ++のハイブリッド継承とは何ですか? 例のあるタイプです

公開: 2021-05-27

プログラミングのコンテキストでは、「継承」という用語をよく使用します。 これは、コードを最大限に再利用するためにプログラミングで実践される機能です。 OOP(オブジェクト指向プログラミング)の「IS-A」の概念を思い出すと、それは継承機能に基づいていることがわかります。 継承の実装は、C++で高度なプロジェクトのアイデアを得るのに役立ちます。

目次

継承とは何ですか?

継承の過程で、あるクラスのオブジェクトは別のクラスのプロパティと動作を取得します。 ここでは、既存の基本クラスから新しいクラスが派生しています。 派生したメンバークラスは通常、子クラスおよび親クラスの基本クラスメンバーと呼ばれます。 子クラスが派生した後、親クラスからすべてのプロパティとメソッドを継承します。

さらに、子クラスは、目的を目的とした排他的なプロパティとメソッドを持つことができます。 既存のクラスにローカルで追加された追加機能は、親クラスから継承したプロパティには影響しません。 したがって、新しいクラスには、両方のクラスの機能が組み合わされています。

C++での継承

多くの場合、実際には、プログラマーは次のことを行う必要のあるオブジェクトを開発する必要があります。
1)親のすべての資質を持ち、さらに、
2)いくつかの側面では、永続性は特別です。

メインクラスでこのような例外的なプロパティをコーディングすることは、必ずしも実用的で経済的であるとは限りません。 その場合、基本クラスを拡張することで新しいクラスが派生します。 また、追加の品質を持つ別のクラスからそれを派生させます。 このようにして、他のクラスで定義されている属性と動作を再利用、拡張、または変更できます。 したがって、複数のクラスから派生した子クラスは、保守と移植が容易なオブジェクトを提供します。 派生クラスは、基本クラスに特化したクラスです。

技術的には、キーワード「extends」はクラスを継承するために使用されます。 C ++は、コロン(“ ”)記号を使用してクラスから継承します。

継承の種類

継承と実装の組み合わせの使用は、クラスが派生する目的によって異なります。 以下に示すように、C++で使用できる継承にはさまざまなタイプがあります。

  • 単一継承は、派生クラスが単一の基本クラスからプロパティと動作を継承する場所です。 例:クラスA→クラスB。
  • 階層継承では、単一の基本クラスから複数の派生クラスが作成されます。 例:クラスA→クラスB→クラスC。
  • 多重継承は、複数の基本クラスからクラスを派生させるためのものです。 ここで、プログラマーが作成する子オブジェクトは、複数の親クラスの特性と機能の側面を組み合わせたものになります。 これらのオブジェクトは、基本クラスの階層に従います。
  • マルチレベル継承は、子クラスが別の派生クラスから派生する場所です。 この機能は、複数のクラスを組み合わせた側面を持ち、それらの階層に従います。
  • ハイブリッド継承は、多重継承を使用する異種機能です。 ここで、子クラスは、単一、階層、およびマルチレベルの継承の1つ以上の組み合わせから派生します。 この継承は、さまざまなタイプの継承を混合するプログラムに採用されます。 たとえば、単一の継承と複数の継承を混在させる場合や、単一のプログラム内で複数の継承を混在させる場合などです。

簡単な例

ここで、クラスBとクラスCはどちらも、基本クラスであるクラスAから派生しています。

車の階層分類は2つのクラスを示しています。 「ガソリン車」と「電気自動車」はどちらも、基本クラスの車から派生しています。

C++でのハイブリッド継承

プログラムを設計するために、2つ以上のタイプの継承を組み合わせて適用する必要がある場合があります。 プログラムに複数のタイプの継承が含まれる場合、それはハイブリッド継承と呼ばれます。

ハイブリッド継承は、単純な多重継承と階層継承の組み合わせです。 通常、多重継承では、クラスは2つのクラスから派生し、親クラスの1つも派生クラスであり、基本クラスではありません。

C ++のハイブリッド継承は、クラスが複数の形式または任意の継承の組み合わせから派生する継承です。 C ++ハイブリッド継承はマルチパス継承とも呼ばれ、1つの派生クラスが異なるパスの基本クラスのプロパティを継承できます。 マルチパス継承とも呼ばれます。 たとえば、マルチレベル継承と階層継承の両方を組み合わせて実現できます。

つまり、ハイブリッド継承は、2つ以上のタイプの継承の組み合わせです。 たとえば、同じプログラムにシングルレベルとマルチレベルの継承を実装することによって。

ハイブリッド継承のブロック図

この図は、2つの継承のハイブリッドの組み合わせを表しています。 単一継承と多重継承。 ここで、単一継承では、クラスBはクラスAから派生します。 同様に、多重継承では、クラスDは複数のクラスから継承されます。 ここでは、クラスBとクラスCです。したがって、単一の継承と複数の継承が混在すると、ハイブリッド継承が形成されます。

ハイブリッド継承は、プログラムに複数の継承を適用​​する必要があるシナリオに適用できます。

C++でのハイブリッド継承の構文

C ++でのハイブリッド継承の一般的な構文とセマンティクスは、次のようになります。

C++でのハイブリッド継承の例

例1:単一+多重継承

単一および多重継承がどのように実装されているかを見てみましょう。

この図の各ブロックはクラスを表し、対応する矢印はクラスの継承を表します。

例2:シングル+マルチレベルの継承

他のタイプの継承を実装して、ハイブリッド継承を構成することもできます。

リアルタイムの例を考えてみましょう

車のサブクラスは、Vehicleクラスから派生します。 別のクラスはレーシングを特徴づけます。 CarクラスとRacingクラスの両方から最終エンティティを導出すると、結合された出力が得られます。 この派生車はフェラーリ–レーシングカーです。

これは、 C++でのハイブリッド継承の概念を説明するための簡単なプログラムです

サンプルコード

出力

世界のトップ大学からオンラインでソフトウェア開発コース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論

この記事が、C++でのハイブリッド継承の概念とタイプを理解するのに役立つことを願っています コンピューターおよびコンピューティング関連のプログラムのストリームに参加している学生は、 OOPの概念など、スキルと技術的な信頼性を高めることができます。 upGradは、そのような専門家がプログラミングの専門知識を持ち、業界市場で競争することを奨励するためのリソースと知識ベースを提供します。 upGradでは、専門的なネットワーキングとスキル開発を探求する機会も得られます。

これらのC++プロジェクトを実行する上で素晴らしい学習の機会があることを願っています。 詳細に興味があり、業界の専門家からの指導が必要な場合は、フルスタックソフトウェア開発におけるupGrad&IIITBangloreのエグゼクティブPGプログラムをご覧ください。

オブジェクト指向プログラミングの継承とは何ですか?

継承はコードを再利用するメカニズムであり、現実の世界をシミュレートするのに役立ちます。 これは、OOPでのデータ抽象化の概念を拡張します。 これは、クラスが別のクラスのプロパティを取得するプロセスです。 OOPでは、クラスは別のクラスに関してのみ定義できることが基本です。 これは、抽象化の概念によるものです。 継承は、他のオブジェクトと同じクラス階層に新しいオブジェクトクラスを作成するメカニズムです。 継承の主な利点は、コードの再利用です。 これは、コードを再利用する方法です。 クラスがあり、それが特定の仕事をしている場合は、それを別の仕事にも使用できます。 たとえば、車とトラックは同じ仕事をするので、同じコードを使用してそれらを運転できます。

C ++での継承の3つのスコープは何ですか?

C ++での継承のスコープは、プライベート、保護、およびパブリックです。 プライベート継承とは、あるクラスが別のクラスから継承されているが、派生クラスにクラスの外部からアクセスできない場合です。 これらのタイプの継承は、基本クラスがクラスの外部からアクセスされることを意図していない場合にのみ使用できます。 保護された継承は、基本クラスがクラスの外部からアクセスされることを意図しておらず、クラスの外部からアクセスすることを意図されている場合に使用されます。 パブリック継承は、基本クラスがクラスの外部からアクセスされることを意図している場合に使用されます。

C ++の多重継承とは何ですか?

多重継承は、複数のクラスからクラスを派生させる機能です。 この機能はCでは使用できません。これは、オブジェクト指向プログラミングをサポートするC++の最も重要な機能の1つです。 C ++での多重継承の実装は、継承クラスの概念に基づいています。 多重継承は、動作の再利用やコードの再利用などのいくつかの問題を解決するために使用できるオブジェクト指向プログラミングモデルをサポートするメカニズムです。 C ++は単一の継承しかサポートしていないため、コードの再利用は常にC++で問題になっています。 多重継承は、複数のインターフェースを1つのオブジェクトに結合することによって実現されます。