我有一个简单的问题。我有一个类,我用它来分裂字符串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个不同的int而是3个不同的int。所以除了2个已经存在的整数变量之外,我想要一个额外的变量。这是最简单的方法吗?
感谢您的帮助!
亲切的问候,
Kipt Scriddy
答案 0 :(得分:1)
扩展类时,首先将其拆分为两个变量,一个与当前代码不同的变量,然后是当前代码将处理的变量。
然后只需致电super(periode)
子类可以访问父变量,因为它们是默认的。
答案 1 :(得分:1)
我不会延长到新的一年。
为什么不使整个事物足够通用,以便它支持你需要的任何分裂。
public class Period {
String [] periodeSplit;
Period(String periode) {
periodeSplit = periode.split("-");
}
public String toString() {
//TODO : Iterate and print.
}
}
答案 2 :(得分:1)
我认为创建更通用的类会更好(而且非常简单),它可以处理你传递给它的任意年份:
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;
}
但是为了让它有意义,你必须在句点中使用chagne toString方法来调用值'years'。