工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java継承のマスター:概念、種類、実践例

Java継承をマスターする

Java継承を深く探求——その原則、実例、クリーンで再利用可能なコードへの適用方法を理解します。

継承は、既存のクラスに基づいて新しいクラスを作成できる、オブジェクト指向プログラミングの基石です。

派生クラスはサブクラス(子クラス、派生クラス)と呼ばれ、継承元のクラスはスーパークラス(親クラス、基底クラス)と呼ばれます。extendsキーワードでこの関係を確立します。

class Animal { // メソッドとフィールド } class Dog extends Animal { // DogはAnimalのフィールドとメソッドを継承 }

ここでは、DogがAnimalのすべてのメンバを継承し、サブクラスが親の機能を獲得します。


例1:基本的な継承

class Animal { String name; public void eat() { System.out.println("I can eat"); } } class Dog extends Animal { public void display() { System.out.println("My name is " + name); } } class Main { public static void main(String[] args) { Dog labrador = new Dog(); labrador.name = "Rohu"; labrador.display(); labrador.eat(); } }

出力

My name is Rohu I can eat

この例では、DogがAnimalからnameとeat()を継承しているため、Dogオブジェクトがそれらに直接アクセスできます。

Java継承のマスター:概念、種類、実践例

is-a関係

Javaの継承はis-a関係を表します:サブクラスはスーパークラスの特殊な形です。

これらの自然な階層が継承の使用を正当化します。


メソッドのオーバーライド

サブクラスがスーパークラスと同じシグネチャのメソッドを定義すると、サブクラスのメソッドがスーパークラスのバージョンをオーバーライドします。これにより実行時多態性が可能になります。

例2:eat()のオーバーライド

class Animal { public void eat() { System.out.println("I can eat"); } } class Dog extends Animal { @Override public void eat() { System.out.println("I eat dog food"); } public void bark() { System.out.println("I can bark"); } } class Main { public static void main(String[] args) { Dog labrador = new Dog(); labrador.eat(); labrador.bark(); } }

出力

I eat dog food I can bark

labradorでのeat()呼び出しは、Dogのオーバーライドされたメソッドに解決されます。

ヒント: @Overrideアノテーションは任意ですが強く推奨されます——メソッドを確かにオーバーライドしていることをコンパイラがチェックします。


superを使ったスーパークラスへのアクセス

オーバーライド時、superキーワードで親の実装を呼び出せます。

例3:eat()でのsuperの使用

class Animal { public void eat() { System.out.println("I can eat"); } } class Dog extends Animal { @Override public void eat() { super.eat(); System.out.println("I eat dog food"); } public void bark() { System.out.println("I can bark"); } } class Main { public static void main(String[] args) { Dog labrador = new Dog(); labrador.eat(); labrador.bark(); } }

出力

I can eat I eat dog food I can bark

ここでは、super.eat()がAnimalで定義されたメソッドを呼び出し、その後サブクラスのロジックを実行します。

同様に、superでスーパークラスのコンストラクタを呼び出せます。


継承におけるProtectedメンバ

protectedでマークされたフィールドやメソッドは、パッケージに関係なくサブクラスからアクセス可能です。

例4:Protectedメンバへのアクセス

class Animal { protected String name; protected void display() { System.out.println("I am an animal."); } } class Dog extends Animal { public void getInfo() { System.out.println("My name is " + name); } } class Main { public static void main(String[] args) { Dog labrador = new Dog(); labrador.name = "Rocky"; labrador.display(); labrador.getInfo(); } }

出力

I am an animal. My name is Rocky

サブクラスは、protectedフィールドnameを自由に読み書きし、display()を呼び出せます。


なぜ継承を使うのか?


継承の種類

Javaは5つの概念的な継承モデルをサポートします——それぞれ異なるシナリオで有用です。

1. 単一継承

クラスが1つのスーパークラスのみを継承します。

Java継承のマスター:概念、種類、実践例

2. 多重継承(マルチレベル)

サブクラスが別のクラスのスーパークラスとなり、連鎖を作ります。

Java継承のマスター:概念、種類、実践例

3. 階層的継承

複数のサブクラスが1つのスーパークラスから継承します。

Java継承のマスター:概念、種類、実践例

4. 多重継承(複数の親)

Javaではクラスが複数のクラスを継承することはできませんが、インターフェースでこのパターンを実現できます。

Java継承のマスター:概念、種類、実践例

注意: 多重継承はインターフェースで実装可能です。Java implements multiple inheritanceを参照してください。


5. ハイブリッド継承

2つ以上の継承タイプの組み合わせ——例えば、階層的継承と多重継承の組み合わせ。

Java継承のマスター:概念、種類、実践例

Java

  1. C# 継承をマスターする:概念、種類、実践コード
  2. C#の継承:再利用可能で保守しやすいコードを構築する
  3. Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
  4. Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
  5. Java Staticネストクラスの理解:用法、違い、実例
  6. Java無名インナークラス完全ガイド:定義、構文、実践例
  7. Javaシングルトンパターン完全解説:安全な実装と活用法
  8. Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
  9. Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
  10. Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
  11. Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除