1

我有一个简单的问题。我有一门课,我用它来在 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 个已经存在的整数变量之外,我还想要一个额外的。这样做最简单的方法是什么?

感谢您的帮助!

亲切的问候,

基普特斯克里迪

4

3 回答 3

1

扩展类时,首先将其拆分为两个变量,一个与当前代码不同,然后是当前代码将处理的一个。

然后只需调用super(periode)

子类将有权访问父变量,因为您将它们设为默认值。

于 2012-12-08T17:14:59.857 回答
1

我不会延伸到只是增加一个新的一年。

为什么不让整个事情足够通用,以便它支持您需要的任何拆分。

public class Period {

    String [] periodeSplit;


    Period(String periode) {

        periodeSplit = periode.split("-");

    }

    public String toString() {

       //TODO : Iterate and print.
    }
}
于 2012-12-08T17:16:39.397 回答
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;
    }

但要让它有意义,您必须在 Period 中更改 toString 方法,而不是调用值“年”。

于 2012-12-08T17:18:30.067 回答