私はソースを読んでお勧めしますまず第一に - documentation. その後jb-nizetさんanswerの引用:
注コンパイラはあなたのためにそれを追加しますので、この明示的な呼び出しが不要であること。スーパークラスのコンストラクタを引数で呼び出す場合は、コンストラクタでsuper()呼び出しを追加するだけです。
Javaの場合、super
は親クラスを指します。
super()
は、親クラスのコンストラクタを呼び出しています。 super.toString()
は親クラスの実装をtoString
メソッドと呼びます。あなたの例では
:
class MyClass{
private int a;
public MyClass(int a){
super(); //what purpose of this?
this.a = a;
}
//other class methods here
}
それは、空白であるObject
のコンストラクタを呼び出しているので、それだけの知識をひけらかすことが、我々はそれを変更した場合です:それはBar
を呼び出すの略
class Foo extends Bar{
private int a;
public Foo(int a){
super(); //what purpose of this?
this.a = a;
}
//other class methods here
}
"最初のコンストラクタです。私が先に説明した
別の使用法は次のとおりです。
class Bar {
public String toString() {
return "bar";
}
}
class Foo extends Bar{
String foo = "foo";
public Foo(){
super(); //what purpose of this?
}
public String toString() {
super.toString()
}
は「バー」を返すになります。
「super()」の呼び出しはオプションです。良い習慣ですが、それがあなたに何の目的も果たさなければ、あなたはそれをスキップすることができます。 – nullpointer
味が異なります。 FWIW、私の個人的なスタイルは、明示的なスーパーコールを書くことです。スーパークラスが 'Object'であればスーパーコンストラクタが呼び出されるということを読者に思い出させます。なぜなら、' Object() 'コンストラクタが最終的に私はこの事実についての思い出がそれに値するとは思わないと思う。 –