[解決済み] 円形クラスの複数コンストラクタ
2022-02-12 08:27:40
質問
Circleクラスを修正して、半径を表すdoubleと色を表すStringの2つの引数を持つCircleインスタンスを構築するための第3のコンストラクタを含めようとしています。また、このコンストラクタを使用してCircleのインスタンスを構築するためにメインクラスを変更します。私はこれで困っています、私はコンストラクタCircleが決して使用されないというメッセージを受け取り続けます。コードを見てください。
public class Circle {
private double radius;
private String color;
public Circle() {
radius = 1.0;
color = "red";
}
public Circle(double r) {
radius = r;
color = "Blue";
}
public Circle(double r, String c) {
radius = r;
color =c;
}
public double getRadius() {
return radius;
}
public void setRadius(double newRadius) {
radius = newRadius;
}
public String getColor()
{
return color;
}
public void setColor(String newColor) {
color=newColor;
}
public double getArea() {
return radius*radius*Math.PI;
}
}
public class Main {
public static void main(String[] args) {
Circle c1 = new Circle();
System.out.println("The circle has radius of " + c1.getRadius());
System.out.println("and area of " + c1.getArea());
Circle c2 = new Circle(2.5);
System.out.println("The circle has radius of " + c2.getRadius());
System.out.println("and area of " + c2.getArea());
Circle c3 = new Circle(0.5);
c3.setColor("Green");
System.out.println("The circle has radius of "
+ c3.getRadius());
System.out.println("and area of " + c3.getArea());
System.out.println("color is: " + c3.getColor());
Circle c5 = new Circle();
c5.setRadius(500.0);
System.out.println("radius is: " + c5.getRadius());
c5.setColor("Yellow");
System.out.println("color is: " + c5.getColor());
}
}
解決方法は?
まあ、使っていないのだから、このメッセージは驚くには値しないでしょう。ただ、2つの引数を持つコンストラクタの呼び出しをどこかに貼り付けるだけです(例,
Circle c3 = new Circle(0.5, "Green");
というメッセージが表示されます。もちろん、インスタンス生成をすべて2引数のコンストラクタに変更すると、0引数や1引数のバージョンでも警告が表示されるようになります。
あるいは、コンストラクタの定義を変更することも可能です。
public class Circle {
public Circle() {
this(1.0, "red");
}
public Circle(double r) {
this(r, "Blue");
}
public Circle(double r, String c) {
radius = r;
color = c;
}
...
}
ただ、色のデフォルト値が、デフォルトの半径を使うときは "red"、半径を指定するときは "Blue"というのはおかしいと言わざるを得ませんね。その場合は、最初のコンストラクタを次のように変更することをお勧めします。
public Circle() {
this(1.0);
}
を使うことも検討してみてください。
enum
大文字と小文字の違いによる問題を避けるためです ("red" と "Red" のように)。大文字と小文字の違い ("red" と "Red") を避けるため、いつでも
enum
の値と
String
を使用して、組み込みの
enum
メソッド
name()
と
valueOf(String)
.
関連
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み】CreateProcess error=2, The system cannot find file specified.
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】"|="の意味は何ですか?(パイプ等号演算子)
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】破損したjarファイル
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。