この記事では、Java の継承がどのようにスーパークラスとサブクラスの間に「is-a」関係を持ち、サブクラスがスーパークラスの機能を継承およびカスタマイズできるようにするかについて説明します。ポリモーフィズムを使用すると、サブクラスで独自の動作を定義できるため、コードの再利用とオブジェクト指向プログラミングの柔軟性が可能になります。
Java では、継承におけるスーパークラス (親クラス) とサブクラス (子クラスまたは派生クラス) の関係は、サブクラスが機能を継承するスーパークラスの特殊化されたバージョンであることを意味する is-a 関係です (制限により、適用される) から派生したクラス (CSU Global、未確認)。言い換えると、クラス B がクラス A から継承する場合、クラス B はクラス A の「タイプ」です。この関係により、クラス B はクラス A が提供するすべての機能 (制限が適用可能) を使用できると同時に、独自の機能も追加できます。特定の機能をオーバーライドしたり、クラス A の機能の一部またはすべてをオーバーライドしたりできます。子クラスが機能をオーバーライドする機能は、ポリモーフィズムの一種です。
「多態性の辞書の定義は、生物または種が多くの異なる形態または段階を持つことができるという生物学の原理を指します。この原則は、オブジェクト指向プログラミングや Java 言語などの言語にも適用できます。クラスのサブクラスは、独自の固有の動作を定義しながら、親クラスと同じ機能の一部を共有できます。」 (The Java™ Tutorials、未確認) これは、共通のスーパークラス タイプを共有する異なるサブクラスの複数のオブジェクトを扱う場合に特に有益です。
例: 犬、猫、フクロウは動物です:
スーパークラス
public class Animal { public void makeSound() { System.out.println("Makes a Sound"); } }
動物のサブクラス
public class Domesticated extends Animal { public void friendly() { System.out.println("This animal is friendly."); } }
家畜のサブクラス
public class Undomesticated extends Animal { public void notFriendly() { System.out.println("This animal is not friendly."); } }
家畜のサブクラス
public class Cat extends Domesticated { @Override public void makeSound() { System.out.println("Meow"); } }
非家畜化されたもののサブクラス
public class Owl extends Undomesticated { @Override public void makeSound() { System.out.println("Hoots"); } }
結果を出力するメインクラス
public class inheritanceExample { public static void main(String[] args) { Dog myDog = new Dog(); Cat myCat = new Cat(); Owl redOwl = new Owl(); System.out.println("MY Dog:"); myDog.makeSound(); // Outputs: Bark myDog.friendly(); // Outputs: This animal is friendly. System.out.println(); System.out.println("My Cat:"); myCat.makeSound(); // Outputs: Meow myCat.friendly(); // Outputs: This animal is friendly. System.out.println(); System.out.println("Red Owl:"); redOwl.makeSound(); // Outputs: Hoot redOwl.notFriendly(); // Outputs: This animal is not friendly. } }
注: Dog クラスと Cat クラスの makeSound() メソッドは、Animal クラスの makeSound() メソッドをオーバーライドします。
さらに、Dog クラスは、Animal クラスのサブクラスであるdomesticated クラスのサブクラスです。
「→」の子
Java では、サブクラスはスーパークラスを 1 つだけ持つことができます。たとえば、Dog クラスはスーパークラスdomesticated とスーパークラス Animal を持つことはできません。以下は許可されません。
言い換えると、サブクラスはスーパークラスを 1 つだけ持つことができ、複数の親、祖父母、曾祖父母を持つことは許可されません。
結論として、Java の継承により、サブクラスがスーパークラスの機能を利用および拡張できるようになり、「is-a」関係が具体化され、ポリモーフィズムが促進されます。これにより、共通のスーパークラス全体で共有される特性を維持しながら、サブクラスでの特定の動作が可能になり、コードの再利用性、柔軟性、一貫性が強化されます。
参考文献:
CUS グローバル (未確認)。モジュール 1: 継承を扱う [対話型講義]。コロラド州立大学グローバル、CSC372: プログラミング II、コンピューター サイエンス学科。キャンバス。 2024 年 6 月 8 日、https://csuglobal.instructural.com/courses/94948/pages/module-1-overview?module_item_id=4868813
より取得Java™ チュートリアル (未確認)。 Java 言語の学習: インターフェイスと継承。オラクル。 2024 年 6 月 8 日に取得、https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html
より元々は、2024 年 11 月 1 日に Level UPcoding によって発行された Medium の Alex.omegapy で公開されました。
以上がJava の継承とポリモーフィズム: スーパークラスとサブクラスの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。