の Javaのスーパーキーワード オブジェクトを操作するときに親クラスを参照するために使用される参照変数です。の基本を知っておく必要があります 継承 そして ポリモーフィズム Java スーパー キーワードを理解するため。
キーワード 素晴らしい 継承という概念が生まれました。この記事では、定義、例、使用方法、構文などを含む、Java の super についてすべて説明します。
目次
- Javaのスーパーキーワードの特徴
- Java での super キーワードの使用
- 1. 変数での super の使用
- 2. メソッドでの super の使用
- 3. コンストラクターでの super の使用
- Java スーパーキーワードを使用する利点
Javaのスーパーキーワードの特徴
Java では、スーパー キーワードはサブクラスの親クラスを参照するために使用されます。その主な特徴の一部を次に示します。
- super は、スーパークラスのコンストラクターを呼び出すために使用されます。 サブクラスが作成されると、そのコンストラクターはその親クラスのコンストラクターを呼び出す必要があります。これは、親クラスのコンストラクターを呼び出す super() キーワードを使用して行われます。
- super は、スーパークラスのメソッドを呼び出すために使用されます。 サブクラスは、super キーワードを使用して、親クラスで定義されたメソッドを呼び出すことができます。これは、サブクラスが独自のメソッドに加えて、親クラスのメソッド実装を呼び出す必要がある場合に便利です。
- super は、スーパークラス フィールドにアクセスするために使用されます。 サブクラスは、super キーワードを使用して、親クラスで定義されたフィールドにアクセスできます。これは、サブクラスが親クラスのフィールドのバージョンを参照したい場合に便利です。
- super はコンストラクターの最初のステートメントでなければなりません。 スーパークラスのコンストラクターを呼び出す場合、super() ステートメントはサブクラスのコンストラクター内の最初のステートメントである必要があります。
- super は静的コンテキストでは使用できません。 super キーワードは、静的メソッドや静的変数初期化子などの静的コンテキストでは使用できません。
- super はスーパークラス メソッドを呼び出す必要はありません。 super キーワードを使用して親クラスのメソッドを呼び出すことは可能ですが、必須ではありません。メソッドがサブクラスでオーバーライドされていない場合、super キーワードなしでメソッドを呼び出すと、親クラスの実装が呼び出されます。
全体として、 スーパーキーワード は Java でサブクラス化するための強力なツールであり、サブクラスが親クラスの機能を継承し、その上に構築できるようにします。
Java での super キーワードの使用
主に以下の文脈で使用されます。
- 変数での super の使用
- メソッドでの super の使用
- コンストラクターでのスーパーの使用
1. 変数での super の使用
このシナリオは、派生クラスと基本クラスが同じデータ メンバーを持つ場合に発生します。その場合、内容が曖昧になる可能性があります。 JVM 。
次の例を使用すると、より明確に理解できます。
例
ジャワ
// super keyword in java example> > // Base class vehicle> class> Vehicle {> >int> maxSpeed =>120>;> }> > // sub class Car extending vehicle> class> Car>extends> Vehicle {> >int> maxSpeed =>180>;> > >void> display()> >{> >// print maxSpeed of base class (vehicle)> >System.out.println(>'Maximum Speed: '> >+>super>.maxSpeed);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Car small =>new> Car();> >small.display();> >}> }> |
>
>出力
Maximum Speed: 120>
上記の例では、基本クラスとサブクラスの両方にメンバー maxSpeed があります。 super キーワードを使用して、サブクラスの基本クラスの maxSpeed にアクセスできます。
2. メソッドでの super の使用
親クラスを呼び出したい場合に使用します。 方法 。したがって、親クラスと子クラスに同じ名前のメソッドがある場合は常に、曖昧さを解決するために super キーワードを使用します。
このコード スニペットは、スーパー キーワードの前述の使用法を理解するのに役立ちます。
例
ジャワ
// super keyword in java example> > // superclass Person> class> Person {> >void> message()> >{> >System.out.println(>'This is person class
'>);> >}> }> // Subclass Student> class> Student>extends> Person {> >void> message()> >{> >System.out.println(>'This is student class'>);> >}> >// Note that display() is> >// only in Student class> >void> display()> >{> >// will invoke or call current> >// class message() method> >message();> > >// will invoke or call parent> >// class message() method> >super>.message();> >}> }> // Driver Program> class> Test {> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> > >// calling display() of Student> >s.display();> >}> }> |
>
>出力
This is student class This is person class>
上記の例では、メソッドを呼び出すだけの場合、 メッセージ() 次に、現在のクラス message() が呼び出されますが、 super キーワードが使用されます。 メッセージ() スーパークラスの呼び出しも可能です。
3. コンストラクターでの super の使用
super キーワードを使用して、親クラスのコンストラクターにアクセスすることもできます。もう 1 つ重要なことは、「スーパー」は状況に応じてパラメトリック コンストラクターとノンパラメトリック コンストラクターの両方を呼び出すことができることです。
以下は、上記の概念を説明するコード スニペットです。
例1
ジャワ
メディア送信
// Java Code to show use of> // super keyword with constructor> > // superclass Person> class> Person {> >Person()> >{> >System.out.println(>'Person class Constructor'>);> >}> }> > // subclass Student extending the Person class> class> Student>extends> Person {> >Student()> >{> >// invoke or call parent class constructor> >super>();> > >System.out.println(>'Student class Constructor'>);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Student s =>new> Student();> >}> }> |
>
>出力
Person class Constructor Student class Constructor>
上の例では、サブクラス コンストラクターを介してキーワード「super」を使用してスーパークラス コンストラクターを呼び出しています。
例 2
ジャワ
class> ParentClass {> >public> boolean> isTrue() {>return> true>; }> }> > class> ChildClass>extends> ParentClass {> >public> boolean> isTrue()> >{> >// calls parent implementation of isTrue()> >boolean> parentResult =>super>.isTrue();> >// negates the parent result> >return> !parentResult;> >}> }> > public> class> Main {> >public> static> void> main(String[] args)> >{> >ChildClass child =>new> ChildClass();> >// calls child implementation> >// of isTrue()> >boolean> result = child.isTrue();> > >// prints 'false'> >System.out.println(result);> >}> }> |
>
>出力
false>
Java スーパーキーワードを使用する利点
の Javaのスーパーキーワード オブジェクト指向プログラミングには、次のような多くの利点があります。
- コードの再利用が可能になります : super キーワードを使用すると、サブクラスが親クラスから機能を継承できるようになり、コードの再利用が促進され、重複が削減されます。
- ポリモーフィズムをサポート : サブクラスはメソッドをオーバーライドし、スーパーを使用して親クラスのフィールドにアクセスできるため、ポリモーフィズムが可能です。これにより、より柔軟で拡張可能なコードが可能になります。
- 親クラスの動作へのアクセスを提供します : サブクラスは、super キーワードを通じて親クラスで定義されたメソッドとフィールドにアクセスして使用できるため、再実装することなく既存の動作を利用できます。
- 動作をカスタマイズできます。 メソッドをオーバーライドし、スーパーを使用して親実装を呼び出すことにより、サブクラスは親クラスの動作をカスタマイズおよび拡張できます。
- 抽象化とカプセル化が容易になります。 スーパーを使用すると、下位レベルの詳細の処理を親クラスに依存しながら、サブクラスがその動作に集中できるようになり、カプセル化と抽象化が促進されます。
全体として、スーパー キーワードは、 継承 そして 多態性 これは、再利用可能で拡張可能で、よく整理されたコードを作成しようとしている開発者にいくつかの利点をもたらします。
Java スーパー キーワードを使用する際に覚えておくべき重要な点
Java でスーパー キーワードを使用する際に注意する必要がある重要な点をいくつか示します。
- super() への呼び出しは、派生(Student) クラスの最初のステートメントである必要があります コンストラクタ なぜなら、よく考えてみると、スーパークラスがサブクラスについての知識を持たないことは当然であるため、スーパークラスが実行する必要がある初期化は、サブクラスによって実行される初期化とは別個のものであり、サブクラスによって実行される初期化の前提条件となる可能性があります。したがって、最初に実行を完了する必要があります。
- コンストラクターがスーパークラス コンストラクターを明示的に呼び出さない場合、Java コンパイラーはスーパークラスの引数なしのコンストラクターへの呼び出しを自動的に挿入します。スーパークラスに引数のないコンストラクターがない場合、コンパイル時エラーが発生します。オブジェクト する そのようなコンストラクターがあるため、Object が唯一のスーパークラスである場合は問題ありません。

- サブクラスのコンストラクターがそのスーパークラスのコンストラクターを明示的または暗黙的に呼び出す場合、Object のコンストラクターに至るまで、コンストラクターのチェーン全体が呼び出されると考えるかもしれません。実際、これが事実です。いわゆる コンストラクターの連鎖 。
FAQ – Java スーパーキーワード
Q1. Javaのsuper()とsuperキーワードとは何ですか?
素晴らしい() スーパークラス コンストラクターを呼び出すために使用される Java キーワードです。スーパーはスーパークラスのメンバーにアクセスし、継承階層を維持します。
Q2. Javaのスーパークラスはどれですか?
の オブジェクトクラス、別名スーパークラス のクラス階層の最上位にあります Javaのjava.langパッケージ 。すべてのクラスは、事前定義かユーザー定義かに関係なく、Object クラスのサブクラスです。
Q3. Java で Super が重要なのはなぜですか?
super は、スーパークラスとサブクラス間の関係へのアクセス、初期化、管理を容易にし、コードの再利用性を促進するため、Java では不可欠です。