私はこのロットについて検索し、我々はコンストラクタと簡単な初期化の両方を使用することができると述べている given answer hereなぜコンストラクタを使用するのか、変数の単純な初期化を必ずしも使用しないのはなぜですか?
- が
しかし、私はこの
の回答をしたいスタックオーバーフローでこの答えを得るしています- が、なぜそれが自動的にコンパイルすることによって行われていれば、コンストラクタの初期化を使用しますr!新しいオブジェクトを作成するには
私はこのロットについて検索し、我々はコンストラクタと簡単な初期化の両方を使用することができると述べている given answer hereなぜコンストラクタを使用するのか、変数の単純な初期化を必ずしも使用しないのはなぜですか?
しかし、私はこの
の回答をしたいスタックオーバーフローでこの答えを得るしていますコンストラクタの単純な定義:
クラスのオブジェクトを初期化する特別なメソッド。クラスのインスタンスを作成するには、常に、new
キーワードと一緒に使用します。
が、なぜそれが自動的に コンパイラによって行われていれば、コンストラクタの初期化を使用します!
コンストラクタは、コンストラクタを実装していない場合は、コンパイラ(デフォルトのコンストラクタ)によって初期化されます。
、なぜ我々はコンストラクタを実装する必要がありますか?
:
すべてRectangle()
名前、いくつかの異なるコンストラクタを提供java.awt
パッケージ内Rectangle
クラスを考慮したが、引数の数が異なる、又はより引数の異なるタイプの各新しいRectangle
オブジェクトは初期状態になります。
public Rectangle()
public Rectangle(int width, int height)
public Rectangle(int x, int y, int width, int height)
public Rectangle(Dimension size)
public Rectangle(Point location)
public Rectangle(Point location, Dimension size)
public Rectangle(Rectangle r)
java.awt.Rectangle
クラスからのコンストラクタの署名がありますあなたのメンバ変数が
private
(セキュリティ上の理由)であればどのような
?他のクラスにメンバー変数を渡したくない場合は、getterとsetterを使用する必要がありますが、最初はコンストラクタで初期化してから、必要に応じて後でgetterとsetterを使用して変更できますそれを変更/更新する。
、我々は、我々はクラスで定義する必要がparamaetrizedコンストラクタを実行する場合、デフォルトconstructor.Butを追加し、自動的にデフォルトコンストラクタコンパイラを作成constructor.Ifを実行する必要があります。..
私はその質問と回答を読んだ後、まだあなたには分かりません。 –
最も単純な答えは、例えばint型の変数には常に0に割り当てられます。デフォルトを1にする必要がある場合、コンストラクタ内で ""(空文字列)を使用してインスタンス変数を初期化すると、ヌルポインタを気にする必要があります。 – Abhishek