著者のホームページ:デザイナー Xiao Zheng
著者の簡単な紹介: JAVA テクノロジ、システム カスタマイズ、リモート ガイダンスに重点を置いた 3 年間の JAVA フルスタック開発経験、エンタープライズ デジタル トランスフォーメーションに専念、CSDN カレッジおよび Blue Bridge クラウド コースの認定講師。
主な方向性: Vue、SpringBoot、WeChat アプレット
この記事では、Java におけるオブジェクト指向継承の概念と構文を説明し、サンプル コードを示します。継承はオブジェクト指向プログラミングにおける重要な機能であり、クラスが別のクラスのプロパティとメソッドを継承できるようになります。
1. 継承とは何ですか
継承はオブジェクト指向プログラミングにおける重要な機能であり、クラス (サブクラス) が別のクラス (親クラス) のプロパティとメソッドを継承できるようにします。
サブクラスは、親クラスのパブリック メンバー変数およびメソッドを継承でき、親クラスのメソッドをオーバーライドしたり、独自のメンバー変数およびメソッドを追加したりすることもできます。
継承の主な目的は、コードの再利用と拡張を実現することです。継承を通じて、サブクラスは親クラスから既存のプロパティとメソッドを継承できるため、同じコードを繰り返し記述する必要がなくなります。サブクラスは継承に基づいて関数を拡張し、独自の一意のプロパティとメソッドを追加して、より多くの関数を実現できます。
Javaでは、キーワードはextends
クラスの継承関係を実現するために使用され、親クラスを継承する子クラスの文法形式は次のようになります。
public class 子类名 extends 父类名 {
// 子类的成员变量和方法
}
継承を通じて、サブクラスは、継承されたものや親クラスで定義されたものを含む、親クラスのパブリック メンバー変数とメソッドにアクセスできます。
継承には次のようなものがあります6 66 つの重要な概念と特徴をよく読んでください。
- サブクラスは親クラスの特性を継承し、親クラスのプロパティやメソッドを取得できます。
- サブクラスは親クラスのメソッドをオーバーライドして、独自の動作を実装できます。
- サブクラスは独自のメンバー変数とメソッドを追加できます。
- サブクラスは、スーパークラスの非プライベート メンバーに直接アクセスできます。
- サブクラスと親クラスの継承関係は一方向であり、親クラスはサブクラスのプロパティやメソッドを継承できません。
- Java は多重継承をサポートしていません。つまり、クラスは 1 つの親クラスからのみ継承できます。
継承はオブジェクト指向プログラミングにおける重要なメカニズムであり、コードを再利用および拡張する機能を提供し、プログラム設計をより柔軟で保守しやすくします。
2. 継承する理由
Java での継承の使用には次のようなものがあります5 55つのメリット、ぜひじっくり学んでください。
- コードの再利用: 継承により、サブクラスが親クラスのプロパティとメソッドを継承できるようになり、同じコードを繰り返し記述する必要がなくなります。サブクラスは親クラスのプロパティとメソッドを直接使用できるため、コードの量が削減され、コードの再利用性が向上します。
- 統合インターフェイス: 継承を通じて、関連するクラスのグループをクラス ファミリにグループ化し、同じインターフェイスと動作を共有することができます。これにより、コードの可読性と保守性が向上し、プログラム設計がより標準化され、統一化されます。
- 拡張性: 継承により、既存のクラスに基づいて機能を拡張できます。サブクラスは独自のプロパティとメソッドを追加し、親クラスのメソッドをオーバーライドして、より多くの機能を実現できます。このようにして、元のコードを変更することなく、サブクラスを拡張して新しい要件を満たすことができます。
- ポリモーフィズム: 継承はポリモーフィズムの基礎です。親クラス参照変数を通じてサブクラスオブジェクトを参照できるため、異なるサブクラスオブジェクトの統一的な処理が実現できます。ポリモーフィズムにより、コードの柔軟性とスケーラビリティが向上します。
- 保守性: 継承を通じて、関連するクラスをまとめて整理できるため、コードがより明確で理解しやすくなります。コードの一部を変更する必要がある場合、他の部分に影響を与えることなく、親クラスまたはサブクラスのコードのみを変更するだけで済み、コードの保守性が向上します。
要約すると、継承はオブジェクト指向プログラミングにおける重要なメカニズムであり、コードの再利用、拡張、柔軟性を提供します。継承により、コードの冗長性が削減され、コードの可読性と保守性が向上し、プログラム設計がより標準化および統一化されます。
3. 継承方法
Javaではextends
クラスの継承関係を実現するためにキーワードを使用しますが、以下はサンプルコードですので、ローカルにコピーして実行してください。
// 父类
class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
// 子类
class Dog extends Animal {
private String breed;
public Dog(String name, String breed) {
super(name);
this.breed = breed;
}
public void bark() {
System.out.println(name + " is barking.");
}
}
// 测试类
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Tommy", "Labrador");
dog.eat(); // 调用父类的方法
dog.bark(); // 调用子类的方法
}
}
上記のコードでは、Animal
クラスは親クラス、Dog
クラスは子クラスです。サブクラスは、キーワードDog
を通じて親クラスのプロパティとメソッドextends
を継承します。Animal
サブクラスの構築メソッドで、super
キーワードを使用してスーパークラスの構築メソッドを呼び出し、スーパークラスのプロパティを初期化します。サブクラスは、サンプル コードのbreed
メソッド やメソッドなど、独自のメンバー変数やメソッドを定義することもできます。bark()
Main
クラス内でDog
オブジェクトを作成し、スーパークラスとサブクラスのメソッドを呼び出します。継承を通じて、サブクラスは親クラスのプロパティとメソッドにアクセスでき、独自の関数を追加することもできます。
上記は、クラス継承を実装するために使用する方法を示す簡単な例ですextends
。継承を通じてコードの再利用と拡張を実現し、プログラム設計をより柔軟で保守しやすくします。
4 番目、継承とカプセル化、ポリモーフィック接続
Java では、継承、カプセル化、およびポリモーフィズムがオブジェクト指向プログラミングの3 つの側面です3 つの重要な概念があり、それらは密接に関連しています。
- 継承とカプセル化: 継承とカプセル化はどちらもオブジェクト指向プログラミングの基本的な機能であり、相互に組み合わせて使用できます。継承は既存のクラスのプロパティとメソッドを拡張することでコードの再利用と拡張を実現しますが、カプセル化はクラスの内部実装の詳細を隠し、データとメソッドを保護するインターフェイスを提供することで、コードのセキュリティと保守性を向上させます。継承では、親クラスのカプセル化されたプロパティとメソッドを継承でき、これらのカプセル化されたメンバーをサブクラスで使用できます。継承とカプセル化を組み合わせて使用することで、よりモジュール化された拡張可能なコード設計を実現できます。
- 継承とポリモーフィズム: 継承とポリモーフィズムは、オブジェクト指向プログラミングにおける 2 つの重要な概念であり、クラス階層とメソッドの書き換えを通じて実装されます。継承により、サブクラス オブジェクトを親クラス オブジェクトと見なすことができ、それによってポリモーフィズムが実現されます。ポリモーフィズムを利用すると、親クラスの参照変数を利用してサブクラスのオブジェクトを参照できるため、異なるサブクラスのオブジェクトを統一的に処理することが可能になります。継承とポリモーフィズムを組み合わせると、コードの柔軟性とスケーラビリティが向上し、プログラム設計がオブジェクト指向の特性により沿ったものになります。
継承、カプセル化、およびポリモーフィズムはオブジェクト指向プログラミングの中核概念であり、これらが連携してコードの再利用、カプセル化、および柔軟性を促進します。継承、カプセル化、ポリモーフィズムを適切に適用することで、明確な構造、スケーラビリティ、保守性を備えたコードを設計でき、開発効率とコード品質を向上させることができます。
5. 継承された面接の質問
1. Java における継承とは何ですか?
回答: 継承とは、クラス (サブクラスまたは派生クラスと呼ばれる) が別のクラス (親クラスまたは基本クラスと呼ばれる) のプロパティとメソッドを継承できるようにするオブジェクト指向プログラミングの概念です。
2. 継承の利点は何ですか?
回答: 継承には次の利点があります。
- コードの再利用: サブクラスは親クラスのプロパティとメソッドを継承できるため、同じコードを繰り返し記述する必要がなくなります。
- 統一されたインターフェイス: サブクラスは親クラスのインターフェイスと動作を共有できるため、プログラム設計がより標準化され、統一されます。
- 拡張性: サブクラスは親クラスに基づいて関数を拡張し、新しいプロパティとメソッドを追加できます。
- ポリモーフィズム: サブクラス オブジェクトは、親クラス参照変数を通じて参照でき、異なるサブクラス オブジェクトの統合処理を実現します。
3. 継承関係をどのように実現するか?
回答: Java では、キーワードを使用してextends
継承関係を実装します。サブクラスは、extends
キーワードを通じて親クラスのプロパティとメソッドを継承します。
4. Java では多重継承は可能ですか?
回答: Java は多重継承をサポートしていません。クラスは 1 つの親クラスからのみ継承できます。ただし、Java はインターフェイスの多重継承をサポートしているため、クラスは複数のインターフェイスを実装できます。
5. 継承チェーンとは何ですか?
回答: 継承チェーンとは、継承関係における複数のクラスで構成される階層構造を指します。各サブクラスは親クラスから直接的または間接的に継承し、継承チェーンを形成します。
6. Java で最終クラスを継承できますか?
答え: いいえ。Java の最終クラスは継承できません。
7. Java でプライベート メンバーとコンストラクターを継承できますか?
答え: いいえ。プライベート メンバーとコンストラクターは継承できず、サブクラスは親クラスのプライベート メンバーとコンストラクターに直接アクセスできません。
8. 継承と合成の違いは何ですか?
回答: 継承は、既存のクラスのプロパティとメソッドを拡張することでコードの再利用と拡張を実現することです。一方、合成は、既存のクラスのオブジェクトを新しいクラスのメンバーとして使用して、コードの再利用を実現します。継承はis-a
リレーショナル (サブクラスは親クラスの特殊なケース) ですが、合成はhas-a
リレーショナル (新しいクラスが既存のクラスのオブジェクトを持つ) です。
6. まとめ
この記事では、Java におけるオブジェクト指向の継承の概念と構文、およびサンプルコードを説明し、次回のブログでは Java におけるオブジェクト指向ポリモーフィズムの知識ポイントを説明します。