調査を行ったところ、次のことがわかりました。
次のコンストラクターを持つ、以下のようなクラスがあるとします。
public class Triangle implements Shape {
public String type;
public String height;
public Triangle(String type) {
super();
this.type = type;
}
public Triangle(String height) {
super();
this.height = height;
}
public Triangle(String type, String height) {
super();
this.type = type;
this.height = height;
}
}
これにより、コンパイル時エラーが発生します。しかし、height
からに変更するString
と、int
すべて正常に動作します。以下は、変更されたコード部分です。
public class Triangle implements Shape {
public String type;
public int height;
public Triangle(String type) {
super();
this.type = type;
}
public Triangle(int height) {
super();
this.height = height;
}
public Triangle(String type, int height) {
super();
this.type = type;
this.height = height;
}
}
ここでの質問は次のとおりです。最初のケースのようにしたいString
とします。height
なぜ失敗したのですか?説明してください。