の 素晴らしい Java のキーワードは、直接の親クラスのオブジェクトを参照するために使用される参照変数です。
サブクラスのインスタンスを作成すると、スーパー参照変数によって参照される親クラスのインスタンスが暗黙的に作成されます。
Javaスーパーキーワードの使用法
- super は、直接の親クラスのインスタンス変数を参照するために使用できます。
- super を使用して、直接の親クラスのメソッドを呼び出すことができます。
- super() を使用して、直接の親クラスのコンストラクターを呼び出すことができます。
1) super は、直接の親クラスのインスタンス変数を参照するために使用されます。
super キーワードを使用して、親クラスのデータ メンバーまたはフィールドにアクセスできます。親クラスと子クラスが同じフィールドを持つ場合に使用されます。
メディア送信
class Animal{ String color='white'; } class Dog extends Animal{ String color='black'; void printColor(){ System.out.println(color);//prints color of Dog class System.out.println(super.color);//prints color of Animal class } } class TestSuper1{ public static void main(String args[]){ Dog d=new Dog(); d.printColor(); }}今すぐテストしてください
出力:
black white
上の例では、Animal と Dog の両方のクラスが共通のプロパティ色を持っています。 color プロパティを出力すると、デフォルトで現在のクラスの色が出力されます。親プロパティにアクセスするには、super キーワードを使用する必要があります。
2) super を使用して親クラスのメソッドを呼び出すことができます。
super キーワードを使用して、親クラスのメソッドを呼び出すこともできます。サブクラスに親クラスと同じメソッドが含まれている場合に使用する必要があります。つまり、メソッドがオーバーライドされる場合に使用されます。
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void eat(){System.out.println('eating bread...');} void bark(){System.out.println('barking...');} void work(){ super.eat(); bark(); } } class TestSuper2{ public static void main(String args[]){ Dog d=new Dog(); d.work(); }}今すぐテストしてください
出力:
eating... barking...
上記の例では、Animal と Dog の両方のクラスが Eat() メソッドを持っています。Dog クラスから Eat() メソッドを呼び出すと、ローカルが優先されるため、デフォルトで Dog クラスの Eat() メソッドが呼び出されます。
親クラスのメソッドを呼び出すには、super キーワードを使用する必要があります。
3) super は、親クラスのコンストラクターを呼び出すために使用されます。
super キーワードを使用して、親クラスのコンストラクターを呼び出すこともできます。簡単な例を見てみましょう。
class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ super(); System.out.println('dog is created'); } } class TestSuper3{ public static void main(String args[]){ Dog d=new Dog(); }}今すぐテストしてください
出力:
animal is created dog is created
注: super() または this() がない場合、コンパイラによって super() が各クラス コンストラクターに自動的に追加されます。
よく知られているように、コンストラクターがない場合、デフォルトのコンストラクターはコンパイラーによって自動的に提供されます。ただし、最初のステートメントとして super() も追加されます。
super() がコンパイラによって暗黙的に提供される super キーワードの別の例。
class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); }}今すぐテストしてください
出力:
animal is created dog is created
超例: 実際の使用方法
スーパーキーワードの実際の使い方を見てみましょう。ここでは、Emp クラスは person クラスを継承しているため、デフォルトでは Person のすべてのプロパティが Emp に継承されます。すべてのプロパティを初期化するには、子クラスから親クラスのコンストラクターを使用します。このようにして、親クラスのコンストラクターを再利用しています。
class Person{ int id; String name; Person(int id,String name){ this.id=id; this.name=name; } } class Emp extends Person{ float salary; Emp(int id,String name,float salary){ super(id,name);//reusing parent constructor this.salary=salary; } void display(){System.out.println(id+' '+name+' '+salary);} } class TestSuper5{ public static void main(String[] args){ Emp e1=new Emp(1,'ankit',45000f); e1.display(); }}今すぐテストしてください
出力:
1 ankit 45000