コンストラクター (Java)
-
27-09-2019 - |
質問
さて、プライベート プロパティのセットを持つクラスを作成するという課題があり、それを完了しました。私は Java プログラミング (またはプログラミング全般) にかなり慣れておらず、カプセル化についてはあまり慣れていないため、難しくなります。これまでゲッター/セッターやコンストラクターを使用したことがありません。getter/setter メソッドについては理解していますが、コンストラクターに関するオンライン情報はまだ理解できておらず、その目的さえ理解していません。
プロパティごとにゲッター/セッターとコンストラクターを作成する必要があるため、これらのメソッドの使用方法を学ぶ必要があるようです。誰かがコンストラクターを含むクラスの例を示し、コンストラクターが何をしているのか、そしてなぜそれを使用するのかを説明できれば、それは素晴らしいことです。
よろしくお願いします。
解決
まずは、プログラミングの世界へようこそ :)
簡単な例を見てみましょう。
正方形を表すクラスをプログラムしたいとします。Square オブジェクトを作成するときは、Square に各辺の長さなどの特定のプロパティを与える必要があります。ここでコンストラクターが活躍します。
クラスのレイアウトは次のようになります。length_of_each_side 変数には値が割り当てられていないことに注意してください。
public class Square {
int length_of_each_side;
public Square() {
...
}
public Square(int length) {
...
}
}
正方形のサイズを指定しない場合は、事前定義された正方形を提供するデフォルトのコンストラクターを使用できます。
public Square() {
length_of_each_side = 1;
}
または、誰かが正方形のサイズを指定できるようにすることもできます
public Square(int length) {
length_of_each_side = length;
}
事前定義された正方形 (長さ 1) を作成したい場合は、次のようになります。
Square mySquare = new Square();
正方形を作成して長さを 55 に指定すると、次のようになります。
Square mySquare = new Square(55);
他のヒント
学校でこれをどのように見ているのか、教師が何を言っているのかはわかりませんが、ただの提案です。習慣の問題としてゲッターやセッターを使用しないでください。彼らがJavaで「自動」ではない理由があります。それは、彼らが本当にそこにいるべきではないからです。
オブジェクトを持っている場合、アイデアはオブジェクトにあなたのために何かをするように依頼することです - 他の言葉では、変数を取得してそれに基づいて動作し、それを元に戻すのではなく、変数に作用する方法を提供する必要があります。
ゲッターを避けることはできませんが、習慣の問題としてではなく、それらが必要であると確信している場合にのみ追加する必要があります。
コンストラクターは、すべてのメンバー変数を設定するのに最適な場所です。実際、変数を最終的にする場合(入るのが非常に良い習慣であるため、クラスを「不変」にします)。コンストラクターは、それらを割り当てることができる唯一の場所になります。
オブジェクトが作成されたときにコンストラクターが呼び出されることが保証されているため、オブジェクトを設定するのに適した場所です。コンストラクターでは、オブジェクトが有効な状態にあり、最終的なメンバー変数があることを確認する場合、オブジェクトを無効な状態にすることは不可能です。これは本当に便利な練習であり、多くのデバッグ時間を節約できます。