継承

Linda Hamilton
リリース: 2025-01-19 18:08:10
オリジナル
192 人が閲覧しました

Java 継承メカニズムの詳細説明: オブジェクト指向プログラム構築の基礎

Java の継承メカニズムにより、オブジェクトは親オブジェクトのすべてのプロパティと動作を継承できます。これは、オブジェクト指向プログラミング (OOP) の中心概念です。 継承を通じて、既存のクラスに基づいて新しいクラスを作成し、親クラスのメソッドとフィールドを再利用し、これに基づいて新しいメソッドとフィールドを追加できます。

継承とは何ですか?

Java の継承メカニズムを使用すると、あるクラス (サブクラスまたは派生クラス) が別のクラス (スーパークラスまたは親クラス) のプロパティとメソッドを継承できます。 サブクラスはスーパークラスのメンバー (フィールドおよびメソッド) にアクセスして、再利用ルールを強制し、クラス階層を促進できます。 継承は、親子関係としても知られる「IS-A」関係を具体化します。

なぜ Java 継承を使用するのですか?

  • コードの再利用: 継承により、コードの再利用性が大幅に向上し、同じ機能コードを繰り返し記述することがなくなります。
  • メソッドの書き換え (実行時ポリモーフィズムの実装): (追加予定)

相続に関する用語

  • クラス: 共通のプロパティを持つオブジェクトのコレクション。オブジェクトを作成するためのテンプレートまたはブループリントです。
  • サブクラス/サブクラス: 他のクラスから継承するクラス。派生クラス、拡張クラス、サブクラスとも呼ばれます。
  • スーパークラス/親クラス: サブクラスが特性を継承するクラス。基本クラスまたは親クラスとも呼ばれます。
  • 再利用性: 新しいクラスを作成するときに既存のクラスのフィールドとメソッドを再利用するメカニズム。

Java 継承構文

<code class="language-java">class 子类名称 extends 超类名称 {
    // 方法和字段
}</code>
ログイン後にコピー
ログイン後にコピー

extends キーワードは、既存のクラスから派生した新しいクラスを作成することを意味します。 「拡張」は拡張された機能を意味します。 Java の用語では、継承されたクラスは親クラスまたはスーパークラスと呼ばれ、新しいクラスはサブクラスまたは子クラスと呼ばれます。

継承

上の図は、Programmer がサブクラス、Employee がスーパークラスであることを示しています。両者の関係は Programmer IS-A Employee であり、プログラマーは一種の従業員であることを意味します。

例: Programmer.java

<code class="language-java">class Employee {
    float salary = 40000;
}

class Programmer extends Employee {
    int bonus = 10000;

    public static void main(String args[]) {
        Programmer p = new Programmer();
        System.out.println("程序员薪资:" + p.salary);
        System.out.println("程序员奖金:" + p.bonus);
    }
}</code>
ログイン後にコピー
ログイン後にコピー

Java の継承型

Javaの継承はクラスの継承関係により、主に単一継承、多層継承、階層継承の3種類に分けられます。

継承

注: Java はクラスを介した多重継承をサポートしていません。

クラスが複数のクラスを継承することを多重継承と呼びます。例: Java での多重継承

継承

単一継承の例

あるクラスが別のクラスを継承することを、単一継承と呼びます。以下の例では、Dog クラスは Animal クラスを継承するため、単一継承になります。

Test継承.java

<code class="language-java">class Animal {
    void eat() {
        System.out.println("正在吃...");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("汪汪...");
    }
}

class Test継承 {
    public static void main(String args[]) {
        Dog d = new Dog();
        d.bark();
        d.eat();
    }
}</code>
ログイン後にコピー

マルチレベル継承の例

継承チェーンがある場合、それを多レベル継承と呼びます。以下の例では、BabyDog クラスが Dog クラスを継承し、さらにそのクラスが Dog クラスを継承するため、マルチレベル継承になります。 Animal

Test継承2.java

<code class="language-java">class 子类名称 extends 超类名称 {
    // 方法和字段
}</code>
ログイン後にコピー
ログイン後にコピー

階層継承の例

2 つ以上のクラスが 1 つのクラスから継承することを階層継承と呼びます。以下の例では、Dog クラスと Cat クラスの両方が Animal クラスから継承しているため、階層的な継承になります。

Test継承3.java

<code class="language-java">class Employee {
    float salary = 40000;
}

class Programmer extends Employee {
    int bonus = 10000;

    public static void main(String args[]) {
        Programmer p = new Programmer();
        System.out.println("程序员薪资:" + p.salary);
        System.out.println("程序员奖金:" + p.bonus);
    }
}</code>
ログイン後にコピー
ログイン後にコピー

なぜ Java は多重継承をサポートしないのですか? (追加予定)

複雑さを軽減して言語を簡素化するために、Java はクラスを介した多重継承をサポートしていません。

メソッドの書き換えとメソッドのオーバーロード

  • メソッドのオーバーライド: サブクラスは、親クラスで宣言されたメソッドの特定の実装を提供します。
  • メソッドのオーバーロード: 同じクラス内では、メソッド名は同じですが、パラメーターの数または型が異なります。

final キーワードの機能

final キーワードは、メソッドのオーバーライドとクラス拡張を防ぐために使用されます:

  • final フィールド: 再割り当てできません。
  • final メソッド: オーバーライドできません。
  • final クラス: 継承できません。

参考リンク:https://www.php.cn/link/9b4192ee086949047cfc64d86d895c2e

以上が継承の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート