何年経っても処理できる、より一般的なクラスを作成する方が良い(そして非常に簡単)と思います。
public class Period {
int[] years;
Period() {
}
Period(String periode) {
String[] periodeSplit = periode.split("-");
years = new int[periodeSplit.length];
for (int i = 0; i < periodeSplit.length; i++) {
years[i] = Integer.parseInt(periodeSplit[i]);
}
}
public String toString() {
String result = "";
for (int i = 0; i < years.length; i++) {
result += "Year " + i + ":" + years[i] + "\n";
}
return result;
}
}
元のクラスを実際に拡張する必要がある場合は、次のように実行できます。
class ExtendedPeriod extends Period {
int thirdPart;
ExtendedPeriod(String periode) {
String[] periodeSplit = periode.split("-");
this.firstYear = Integer.parseInt(periodeSplit[0]);
this.secondYear = Integer.parseInt(periodeSplit[1]);
this.thirdPart = Integer.parseInt(periodeSplit[1]);
}
public String toString() {
return "Day: " + this.firstYear + "\n" + "Month: " + this.secondYear
+ "\nYear: " + this.thirdPart;
}
}
変数名「firstYear」と「secondYear」を「firstPart」、「secondPart」などの別のものに変更することをお勧めします。これは、extendedPeriod では年ではないためです (コードに残したので、あなたのものとコンパイルされますが、呼び出されます)。新しい int 'thirdPart')。これが継承の最善の使い方だとは思いませんが、それが必要な場合。また、次のように Period から toString を再利用したいと考えていました。
public String toString2() {
return super.toString() + "\nThird part: " + this.thirdPart;
}
しかし、意味を持たせるには、値を「年」と呼ばないように、Period の toString メソッドを変更する必要があります。