No.2ベストアンサー
- 回答日時:
「注意が必要」だけだと、なんとも返事がしにくい感じがします。
「よくない」ということなのか、ただ単に「ここに注意しないといけない」ということなのか。私自身は、コンストラクタにパラメータを指定することを否定的に耳にした記憶はありません。ですので、別に「しないほうがいい」ということではないと思います。
「注意すべき」ということで、ちょっと思いついたのは以下の2点です。
・引数付きコンストラクタを定義した際、デフォルトコンストラクタの定義を忘れて、後で予想外のところで叱られる、ということが往々にしてあります。
・デフォルトコンストラクタと引数付きコンストラクタを用意した場合、コンストラクタの呼び出し順はどうなるのか、考える必要があります。どのメソッド内でthis()して、どこでsuper()するか、きちんと設計しないといけません。よく、複数のコンストラクタをもったクラスで、すべてのコンストラクタで片っ端からsuperしてるのを見たりしますので。
他にもあるのかも知れませんが、今思い出さないので……。いずれも「注意しましょう」ということであって、「だから引数付きコンストラクタはよくない」というわけではありませんので、念のため。
No.1
- 回答日時:
以下の例のように外部から値を書き換えられ、カプセル化が完全ではなくなるから、じぁないかと思います。
class Bust {
private int value;
public void setValue(int aValue) { value = aValue; }
public int getValue() { return value; }
}
class Chihaya {
private final Bust bust;
public Chihaya(final Bust b) { bust = b; }
public Bust getBust() { return bust; }
}
public class TestBad {
public static void main(String[] args) {
Bust b = new Bust();
b.setValue(91);
Chihaya c = new Chihaya(b);
System.out.println("value of Chihaya's Bust : " + c.getBust().getValue());
b.setValue(72);
System.out.println("value of Chihaya's Bust : " + c.getBust().getValue());
}
}
というか、あなたが提示した下の例はコンストラクタではなくなっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
中カッコ{}だけの記述について
-
System.exit()の値を取得したい
-
Socketの接続のタイムアウトを...
-
javaのコンパイルエラーについ...
-
変数を動的に利用するには?
-
javaで特定の文字列から特定の...
-
パソコンキーボードで時分秒を...
-
分を表す数値(int型)を、小数...
-
IF関数でEmpty値を設定する方法。
-
Java配列でNullPointerExceptio...
-
eclipseでコンソールのピン留め...
-
【C#】ハッシュテーブル(連想...
-
[JAVA]try 内の変数を外で!?
-
カタカナの小文字を大文字に変...
-
IBM漢字コード⇒SJIS変換方法
-
格闘ゲームのコマンド判定について
-
PHPのSHA256変換について
-
BOOL値を逆にしたい
-
Jquery 文字列>画像に変換したい
-
配列を後ろから数えるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
プログラミングの問題です。大...
-
NoSuchMethodErrorが解決できま...
-
Socketの接続のタイムアウトを...
-
System.exit()の値を取得したい
-
Javaでlog4jを使ってログ出力を...
-
コンストラクタの引数の中のnew?
-
javaのプログラミングで作るRPG...
-
インタフェイス実装と抽象クラ...
-
javaで特定の文字列から特定の...
-
コマンドライン引数の*(アフ...
-
JSP/Servletのパラメータの受け...
-
randomで
-
privateなフィールドは継承され...
-
GetterとSetterをやったのに。
-
C# DatagridviewにExcelシート...
-
日本語が文字コードによっては...
-
【初心者です】javaで平均値を...
-
ArrayList でスタックを
おすすめ情報