logo

Java で同じデータ メンバーを持つ親クラスと子クラス

C++ では、すべてのクラス メンバー メソッドが非仮想メソッドとなります。そうするためには、プレフィックスとしてキーワードを使用する必要があります。 バーチャル 。一方、Java では、すべてのクラス メンバーのメソッドがデフォルトで仮想として設定されます。それらを非仮想化するには、キーワードを使用します。 ファイナル 。

Java の参照変数は基本的に、オブジェクトのアドレスを 16 進数で保持する変数であり、後でバイナリ システムに変換され、基本的にヒープ メモリに格納されるオブジェクトのアドレスになります。



JavaScript文字列置換

サイズが計算できないため、プリミティブ型とは異なる参照変数。 Java では、Parent クラスの参照変数は、そのオブジェクト参照とその子オブジェクト参照を保持できます。例を使用して非メソッドメンバーについて見てみましょう。

例:

Java
// Java Program to Demonstrate that Non-method Members // are Accessed according to Reference Type // (Unlike methods that are accessed according // to the referred object) // Class 1 // Super class class Parent {  int value = 1000;  // Constructor of super class  Parent()  {  // Print statement  System.out.println('Parent Constructor');  } } // Class 2 // Sub class class Child extends Parent {  int value = 10;  // Constructor of sub class  Child()  {  // Print statement  System.out.println('Child Constructor');  } } // Class 3 // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Creating an object of sub class inside main()  // method  Child obj = new Child();  // Printing the reference of child type  System.out.println('Reference of Child Type :'  + obj.value);  // Note that doing 'Parent par = new Child()'  // would produce same result  Parent par = obj;  // Par holding obj will access the value  // variable of parent class  // Printing the reference of parent type  System.out.println('Reference of Parent Type : '  + par.value);  } } 

出力
Parent Constructor Child Constructor Reference of Child Type :10 Reference of Parent Type : 1000

出力の説明: 親参照変数が子クラスの参照を保持しており、親クラスと子クラスの両方に「value」変数がある場合、子クラスのオブジェクト参照を保持しているかどうかに関係なく、親クラスの「value」変数を参照します。子クラスのオブジェクト参照を保持する参照は、子クラスのメンバー (関数または変数) にアクセスできなくなります。これは、親参照変数が親クラス内のフィールドにのみアクセスできるためです。したがって、参照変数のタイプによって、インスタンス化されるオブジェクトのタイプではなく、呼び出される「値」のバージョンが決まります。これは、コンパイラがメソッドに対してのみ特別な実行時ポリモーフィズム メカニズムを使用するためです。 (インスタンス化されるオブジェクトのタイプによって、呼び出されるメソッドのバージョンが決まります)。



注記: 型キャストによる親ポインタを使用して子データ メンバーにアクセスできるようになります。