C++とJavaの継承
C ++とJavaには、継承の概念があります。継承プロパティは、コードを再利用し、2つのオブジェクト間の関係を作成するために使用されます。ここでは、C++での継承とJavaでの継承の基本的な違いをいくつか見ていきます。
-
Javaでは、すべてのクラスがObjectクラスを拡張しています。したがって、クラスの単一レベルの継承ツリーが常に存在します。オブジェクトクラスはツリーのルートにあります。これが正しいか、単純なコードを使用していないかを確認しましょう。
例
//This is present in the different file named MyClass.java public class MyClass { MyClass() { System.out.println("This is constructor of MyClass."); } } //This is present the different file named Test.Java public class Test { public static void main(String[] args) { MyClass obj = new MyClass(); System.out.println("obj is an instance of Object: " + (obj instanceof Object)); } }
出力
This is constructor of MyClass. obj is an instance of Object: true
-
Javaでは、祖父母クラスのメンバーに直接アクセスできます。
-
保護された可視性は、JavaではC++とは少し異なります。 Javaでは、基本クラスの保護されたメンバーは、そのクラスが基本クラスから派生していない場合でも、同じパッケージの別のクラスからアクセスできます。ここで、MyClassの保護されたメンバーにTestからアクセスできます。
例
//This is present in the different file named MyClass.java public class MyClass { protected int x = 10; protected int y = 20; } //This is present the different file named Test.Java public class Test { public static void main(String[] args) { MyClass obj = new MyClass(); System.out.println("x is: " + obj.x + " y is: " + obj.y); } }
出力
x is: 10 y is: 20
-
Javaでは、継承にextendsキーワードを使用するようにJavaを使用します。 C ++では、パブリック、プロテクト、プライベートなどの継承の可視性を判断できますが、ここでは可視性を変更できません。したがって、一部のメンバーがパブリッククラスでパブリックまたは保護されている場合、それらは派生クラスでもパブリックまたは保護されます。
-
Javaでは、すべてのメソッドはデフォルトで仮想です。 C ++では、仮想キーワードを指定する必要があります。
-
C ++では、多重継承を使用できます。 Javaでは、多重継承を直接作成することはできません。あいまいさを減らすために、Javaは多重継承の効果を得るためのインターフェースをサポートしています。インターフェイスは純粋に抽象的な基本クラスであり、完全な関数はないため、あいまいさはありません。
-
C++での多重継承
多重継承は、クラスが複数の基本クラスから継承する場合に発生します。したがって、クラスは、多重継承を使用して複数の基本クラスから機能を継承できます。これは、C++などのオブジェクト指向プログラミング言語の重要な機能です。 多重継承を示す図を以下に示します- C++で多重継承を実装するプログラムは次のとおりです- 例 #include <iostream> using namespace std; class A { public: int a = 5; A() { &
-
Javaでの継承の種類
Javaは3種類の継承をサポートしています- 単一レベルの継承-クラスは単一のクラスからプロパティを継承します。たとえば、クラスBはクラスAを継承します。 マルチレベル継承-クラスは、プロパティを継承するクラスからプロパティを継承します 階層継承-複数のクラスが単一のクラスからプロパティを継承します。たとえば、クラスBはクラスAを継承し、クラスCはクラスAを継承します。