Javaでの継承(is-a)対構成(has-a)関係
IS-A関係
IS-Aは言い方です-このオブジェクトは、そのオブジェクトの一種です。 extendsキーワードを使用して継承を実現する方法を見てみましょう。
public class Animal { } public class Mammal extends Animal { } public class Reptile extends Animal { } public class Dog extends Mammal { }
さて、IS-Aの関係を考えると、-
- 哺乳類IS-動物
- 爬虫類IS-動物
- Dog IS-A Mammal
- したがって、犬は動物でもあります
extendsキーワードを使用すると、サブクラスは、スーパークラスのプライベートプロパティを除く、スーパークラスのすべてのプロパティを継承できます。
インスタンス演算子を使用すると、哺乳類が実際に動物であることが保証されます。
class Animal { } class Mammal extends Animal { } class Reptile extends Animal { } public class Dog extends Mammal { public static void main(String args[]) { Animal a = new Animal(); Mammal m = new Mammal(); Dog d = new Dog(); System.out.println(m instanceof Animal); System.out.println(d instanceof Mammal); System.out.println(d instanceof Animal); } }
これにより、次の結果が生成されます-
true true true
これらの関係は、主に使用法に基づいています。これは、特定のクラスが特定のものを持っているかどうかを決定します。この関係は、コードの重複やバグを減らすのに役立ちます。
例を見てみましょう-
public class Vehicle{ } public class Speed{ } public class Van extends Vehicle { private Speed sp; }
これは、クラスVanHAS-ASpeedを示しています。 Speed用に別のクラスを用意することで、speedに属するコード全体をVanクラス内に配置する必要がなくなり、複数のアプリケーションでSpeedクラスを再利用できるようになります。
オブジェクト指向機能では、ユーザーはどのオブジェクトが実際の作業を行っているかを気にする必要はありません。これを実現するために、VanクラスはVanクラスのユーザーから実装の詳細を隠します。つまり、基本的には、ユーザーはVanクラスに特定のアクションを実行するように要求し、Vanクラスはそれ自体で作業を実行するか、別のクラスにアクションを実行するように要求します。
-
Javaでの単一レベルの継承
単一レベルの継承-クラスは単一のクラスからプロパティを継承します。たとえば、クラスBはクラスAを継承します。 例 class Shape { public void display() { System.out.println("Inside display"); } } class Rectangle extends Shape { public void area() { System.out.println(
-
Javaでの継承の種類
Javaは3種類の継承をサポートしています- 単一レベルの継承-クラスは単一のクラスからプロパティを継承します。たとえば、クラスBはクラスAを継承します。 マルチレベル継承-クラスは、プロパティを継承するクラスからプロパティを継承します 階層継承-複数のクラスが単一のクラスからプロパティを継承します。たとえば、クラスBはクラスAを継承し、クラスCはクラスAを継承します。