3

説明してください

public class Contact {
    private String contactId;
   private String firstName;
    private String lastName;
    private String email;
    private String phoneNumber;

public Contact(String contactId,String firstName, String lastName,   String email,        String phoneNumber) {
    super();  //what does standalone super() define? With no args here?
    this.firstName = firstName;  
    this.lastName = lastName;     //when is this used?, when more than one args to be entered?
    this.email = email;
    this.phoneNumber = phoneNumber;
}

内部に引数がないSuper()は、定義する引数が複数あることを意味しますか?そして、これは「this.xxx」の助けを借りて行われますか?

なぜ「パブリッククラスContact」自体で定義するのか。なぜここで再度定義し、その引数を呼び出したのですか?

4

2 に答える 2

7

内部に引数がないSuper()は、定義する引数が複数あることを意味しますか?

いいえ、super()あなたの場合、基本クラスの引数なしのコンストラクターを呼び出すだけObjectです。

それは実際には何もしません。これは、コード内で、引数なしのコンストラクターを使用して基本クラスを構築していることを明示するだけです。実際、省略した場合super()は、コンパイラーによって暗黙的に追加されます。

それで、super()とにかく暗黙的に追加された場合、何のためにあるのでしょうか?場合によっては、クラスに引数なしのコンストラクターがないこともあります。このクラスのサブクラスは、たとえばを使用して、スーパーコンストラクターを明示的に呼び出す必要がありsuper("hello")ます。

this.lastName = lastName; //when is this used?, when more than one args to be entered?

this.lastName = lastName;とは何の関係もありませんsuper()。コンストラクター引数の値をlastNameメンバー変数に割り当てる必要があることを示しているだけですlastName。これは同等です

public Contact(String contactId, String firstName, String lastNameArg,
               String email, String phoneNumber) {
    // ...
    lastName = lastNameArg;
    // ...
于 2011-01-13T09:55:31.707 に答える
6

super()スーパークラスのデフォルト(引数なし)コンストラクターを呼び出します。これは、オブジェクトを作成するには、階層の上位にあるすべてのコンストラクターを通過する必要があるためです。

super()省略できます-コンパイラは自動的にそこに挿入します。

あなたの場合、スーパークラスはObject

于 2011-01-13T09:54:53.220 に答える