web-dev-qa-db-ja.com

スーパーキーワードの意味

Javaのsuperキーワードの意味と使用法は何ですか?

35
User

superはJavaのキーワードです。直接の親プロパティを指します。

super()            //refers parent's constructor
super.getMusic();  //refers to the parent's method

- superの詳細

58
Jigar Joshi

superキーワードは、現在のオブジェクトの親クラス(Object、暗黙的に)のインスタンスを参照します。これは、サブクラスのメソッドをオーバーライドしたが、親クラスで定義されたメソッドを呼び出したい場合に便利です。例えば:

_class ClassOne { 
     public say() { 
      System.out.println("Here goes:");
  }
}

class ClassTwo extends ClassOne { 
          public say() {
            super.say();
            System.out.println("Hello"); 
   } 
 }
_

これで、new ClassTwo().say()は次を出力します。

_Here goes:
Hello
_

他の人が言及したように、super()は親のコンストラクターを呼び出し、サブクラスのコンストラクターからのみ呼び出すことができます(間違っている場合は誰かが私を修正します)。

35
Felix

別のクラスから継承する場合、継承元のクラスのメソッドをオーバーライドできます。

これを行うとき、オーバーライドされたメソッドを最初に呼び出してから、その後に何かをする必要がある場合があります。その場合、super()を記述します。

継承に関するいくつかのリンクを次に示します。プログラミングでは非常に重要です: Wiki's Inheritance

Oracleからの簡単な説明

4
Anders Metnik

SuperキーワードはAndroidに固有のものではありません。これはOOPに属する概念であり、使用するクラスの親クラスを表します。 Androidでは、独自のアクティビティまたはコンポーネントを作成するときに主に役立ち、実装する前にデフォルトの動作を呼び出すことができます。

たとえば、アクティビティのonPause、on Resume、onStopなどのメソッドをオーバーライドする場合は、何よりも前にスーパーメソッドを呼び出す必要があります。

詳細については、オブジェクト指向プログラミングの本、およびJavaプログラミングの本を参照してください。

3
XGouchet
  1. 名前が「スーパー」がスーパークラス、つまり直接の親クラスを指していることを暗示しているだけです。

  2. メソッドまたは変数のいずれかであるスーパークラスの即時インスタンスを取得することを意図しています。

  3. スーパーを使用してイミディエート親クラスのインスタンスを取得できるので、マルチレベル継承の場合、極端な親クラスのインスタンスを取得しようとしても機能しません。

  4. 親クラスと子クラスに同じ名前とタイプのメソッドがある場合にのみ、スーパーが必要です

  5. クラスが同じ方法で宣言されると、コンパイラーによってコンストラクターが自動的に作成されることに気付くかもしれません。super()は、コンストラクター内のコンパイラーによって最初のステートメントとして作成されます......

それがあなたを助けたことを願っています...良い一日を過ごしてください(S)