我有一个简单的问题。我有一个类,我用它来在 2 年内分割一个字符串:
public class Period {
int firstYear;
int secondYear;
Period () {
}
Period(String periode) {
String [] periodeSplit = periode.split("-");
this.firstYear = Integer.parseInt(periodeSplit[0]);
this.secondYear = Integer.parseInt(periodeSplit[1]);
}
public String toString() {
return "Firstyear: " + this.firstYear + "\n" + "Secondyear: " + this.secondYear;
}
}
我现在想扩展这个类,不是将数据拆分为 2 个不同的整数,而是拆分为 3 个不同的整数。因此,除了 2 个已经存在的整数变量之外,我还想要一个额外的变量。最简单的方法是什么?
感谢您的帮助!
亲切的问候,
基普特·斯克里迪
最佳答案
我认为创建更通用的类会更好(而且很容易),该类将能够处理您传递给它的任何数量的年份:
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”,因为对于extendPeriod来说,它们不再是年(我将它们留在代码中,这样它就可以用你的,但将新的 int 称为“thirdPart”)。我不认为这是继承的最佳用途,但如果这是需要的话。我还想像这样重用Period中的toString:
public String toString2() {
return super.toString() + "\nThird part: " + this.thirdPart;
}
但要使其有意义,您必须更改 period 中的 toString 方法,不要调用值“年”。</p>
关于java - 使用额外参数扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779705/