2017-09-18 15 views
1

私はこのような学生のクラスを持っています。コンストラクタは何も返さないので、なぜコンストラクタをオブジェクトに割り当てるのですか?戻り型のメソッドとまったく同じですか?戻り値の型がない場合、コンストラクタはオブジェクトに割り当てられていますか?

その2つの違いは何ですか?コンストラクタの

class Student { 
    int id; 
    public Student (int id) { 
    this.id= id; 
    } 
    public int returnID() { 
    return id; 
    } 
} 

public class App { 
    public static void main(String [] args) { 
    Student std1 = new Student(1); // this 
    int idValue = std1.returnId(); // versus that 
} 
} 
+1

コードの書式設定には注意が必要です。 Markdownでさえ、それはどこにでもあります。判読不能なコードは、将来の訪問者にはあまり役立たず、回答を受け取る可能性は低くなります。 –

+0

また、4つのスペースでソースコードを書式化したい場合は、「太字」にすることはできません。 – GhostCat

答えて

3

intialize新しいオブジェクトです。

新しいオブジェクトの「創造」(およびそのオブジェクトへの参照を提供する)はnewがやっていることです。

newの場合新しい Javaオブジェクトが作成されました。そのことを初期化するためにコンストラクタが呼び出されます。したがって

int value = someStudent.returnId(); 

は、単にそのオブジェクトの本当方法... int型の値を返すために起こる呼び出すのに対し

Student someStudent = new Student(1); 

は、その新しいオブジェクトを作成します。

つまり、コンストラクタは実際のメソッドではないため、作成されたオブジェクトを返す最終リターンはありません。そして、記録のために:ではなく、はオブジェクトを返すことは、コンストラクタの非常に重要な部分です。

+2

'new()'で使われている '()'を 'new'として削除するべきでしょうか、それ自体はメソッドではありません。これは予約語であり、これは混乱につながる可能性があります。 – Pelocho

+0

良い点、感謝と更新。 – GhostCat

+0

それでは、コンストラクタが呼び出されたときにsomeWhatオブジェクトがどのように認識されるのですか? –

0

コンストラクタは、オブジェクトを初期化します。オブジェクトは、下にさまざまなプロパティとメソッドを持つことができます。

コンストラクタでは常にオブジェクトを初期化するため、return文はありません

+0

コンストラクタが何も返さない場合、メソッドから返された値を割り当てるのと同じように、なぜオブジェクトに割り当てられるのですか? –

関連する問題