Java OOP の継承:例を使ってすべての型を学ぶ
継承とは?
継承 あるクラスが別のクラスのプロパティを取得するメカニズムです。たとえば、子供は両親の特徴を受け継いでいます。継承により、既存のクラスのフィールドとメソッドを再利用できます。したがって、継承は再利用性を促進し、OOP の重要な概念です。
このチュートリアルでは、次のことを学びます-
- 継承の種類
- Java での継承
- Java 継承の例
- スーパー キーワード
- 例を使って OOP の継承を学ぶ
継承の種類
Java のさまざまなタイプの継承を次に示します。
単一継承:
単一継承では、1 つのクラスが別のクラスを拡張します (1 つのクラスのみ)。
<センター>
<図>
センター>
上の図では、クラス B はクラス A のみを拡張します。クラス A はスーパー クラスであり、クラス B はサブクラスです。
多重継承:
多重継承は、1 つのクラスが複数のクラスを拡張する Java 型の継承の 1 つです。 Java は多重継承をサポートしていません。
<センター>
<図>
センター>
上の図のように、クラス C はクラス A とクラス B の両方を拡張します。
マルチレベルの継承:
マルチレベル継承では、1 つのクラスが派生クラスから継承できます。したがって、派生クラスは新しいクラスの基本クラスになります。
<センター>
<図>
センター>
図に示すように、クラス C は B のサブクラスであり、B はサブクラス クラス A のサブクラスです。
階層的継承:
階層的継承では、1 つのクラスが多くのサブクラスに継承されます。
<センター>
<図>
センター>
上記の例のように、クラス B、C、および D は同じクラス A を継承します。
ハイブリッド継承:
ハイブリッド継承は Java の継承タイプの 1 つで、単一継承と多重継承を組み合わせたものです。
<センター>
<図>
センター>
上記の例のように、クラス A のすべてのパブリック メンバーとプロテクト メンバーは、最初にクラス B を介して、次にクラス C を介してクラス D に継承されます。
注: Java はハイブリッド/多重継承をサポートしていません
Java での継承
Java 継承 あるクラスが別のクラスのプロパティを取得するメカニズムです。 Java では、2 つのクラス間に「Is-A」関係が存在する場合、継承を使用します。親クラスをスーパークラス、継承したクラスをサブクラスと呼びます。キーワード extends
サブクラスがスーパークラスの機能を継承するために使用します。
コードの再利用につながるため、継承は重要です。
Java 継承構文:
class subClass extends superClass { //methods and fields }
Java 継承の例
Java での継承の例を次に示します:
<センター>
<図>
Java 継承の例
フィギュア>センター>
class Doctor { void Doctor_Details() { System.out.println("Doctor Details..."); } } class Surgeon extends Doctor { void Surgeon_Details() { System.out.println("Surgen Detail..."); } } public class Hospital { public static void main(String args[]) { Surgeon s = new Surgeon(); s.Doctor_Details(); s.Surgeon_Details(); } }
スーパー キーワード
super キーワードは「this」キーワードに似ています。
キーワード super を使用して、親クラスの任意のデータ メンバーまたはメソッドにアクセスできます。
スーパー キーワードは、変数、メソッド、およびコンストラクタ レベルで使用できます。
構文:
super.<method-name>();
例を使って OOP の継承を学ぶ
前の例と同じバンキング アプリケーションを考えてみましょう。
1 つは貯蓄用、もう 1 つは当座預金用 (当座預金とも呼ばれます) です。
構造化されたオブジェクト指向プログラミングの観点からコーディングにアプローチする方法を比較検討してみましょう。
構造的アプローチ :構造化プログラミングでは、2 つの関数を作成します –
<オール>これらの機能の動作はアカウント間で同じであるためです。
OOP のアプローチ :OOPs プログラミング アプローチを使用している間。 2 つのクラスを作成します。
- それぞれが入金および出金機能を実装しています。
- これにより余分な作業が不要になります。
ソフトウェアの変更リクエスト
現在、ソフトウェア業界で非常に一般的な要件仕様に変更があります。当座貸越機能を備えた機能特権銀行口座を追加することになっています。背景として、当座貸越とは、アカウントの利用可能な残高よりも多くの金額を引き出すことができる機能です。
構造的アプローチ: 機能的アプローチを使用して、既にテストされベースライン化されている撤回機能を変更する必要があります。以下のようなメソッドを追加すると、新しい要件に対処できます。
OOP のアプローチ: OOP のアプローチを使用すると、withdraw 関数の独自の実装を持つ新しいクラスを作成するだけで済みます。テスト済みのコードには触れていません。
別の変更リクエスト
要件がさらに変更された場合はどうなりますか?独自のデポジット要件を持つクレジット カード アカウントを追加したい。
構造的アプローチ: 構造的アプローチを使用すると、テスト済みの預金コードを再度変更する必要があります。
OOP のアプローチ :しかし、オブジェクト指向のアプローチを使用すると、deposit メソッドの独自の実装を持つ新しいクラスを作成するだけです (下の画像で赤くハイライトされています)。
したがって、構造的プログラミングは最初は簡単なアプローチのように見えますが、長期的には OOP が勝利します。
OOP における継承の利点
しかし、すべてのクラスでコードの断片が繰り返されていると主張する人もいるかもしれません.
これを克服するには、「アカウント」という親クラスを作成し、預金と引き出しの同じ機能を実装します。そして子クラスに「アカウント」クラスを継承させます。これにより、アカウント クラスで出金および入金機能にアクセスできるようになります。
機能を個別に実装する必要はありません。これは Java の継承です。 .
Java
- Java 継承
- 例を使用したC#のインターフェイスとは
- Java における OOP の概念 |基礎と例
- OOP における抽象化とは何ですか? Java 抽象クラスとメソッド
- 例を使用した Java OOP でのカプセル化
- Java の String Length() メソッド:例で見つける方法
- Java String charAt() メソッドと例
- Java String contains() メソッド |部分文字列を例でチェック
- 例を使用したJava文字列のendsWith()メソッド
- Java BufferedReader:例を使用して Java でファイルを読み取る方法
- プログラム例を使用した Java の挿入ソート アルゴリズム