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つの異なるintに分割するのではなく、3つの異なるintに分割して、このクラスを拡張したいと考えています。したがって、すでに存在する2つの整数変数に加えて、もう1つ追加したいのです。これを行う最も簡単な方法は何ですか?

あなたの助けに感謝します!

敬具、

キプト・スクリディ

4

3 に答える 3

1

クラスを拡張するときは、最初に 2 つの変数に分割します。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 に答える