まずJavaでの配列は静的配列となるので、
java
1/* 略 */
2 protected void makeArray() {
3 //この一行を追加
4 intArray = new int[max];
5 //
6 for (int i = min; i < max; i++) {
7 intArray[i] = i;
8 }
9 }
10/* 略 */
このように配列を宣言するか、
java
1 import java.util.ArrayList;
2
3 public class IntOperator {
4
5
6 protected ArrayList<Integer> intArray = new ArrayList<Integer>();
7
8 private int max;
9
10 private int min;
11
12
13 private IntOperator() {
14 }
15
16 192021
22 private IntOperator(int min, int max) {
23 this.max = max;
24 this.min = min;
25 }
26
27
28 protected void makeArray() {
29 for (int i = min; i < max; i++) {
30 intArray.add(i, i);
31 }
32 }
33
34
35 protected double calc() {
36 return 0;
37 }
38}
こうやって動的配列を使うかですね…
ちなみに、calcはprotectedにしておく必要があります。
protectedで、継承した子クラスからの参照が可能になります。
オーバーライドされたくない場合は、「final」修飾子を付ければ良いです。
肝心の継承ですが、
前者の配列を使うことを前提で書きますね。
java
1 public class SumCalc extends IntOperator{ //extendsで継承
2
3 @Override
4 public double calc() {
5 int sum = 0;
6 for (int i = min; i < max; i++) { //min から max まで足す
7 sum += intArray[i];
8 }
9 return sum; // 値を返す
10 }
11
12 }
13
あと、double(64bit浮動小数点数)である必要はないですね…
intArrayがint(整数値)のなので。
全く筋違いの回答でしたらすみません…
推測するに、javascriptかなんかをやっていたのではないでしょうか…?
あと、任意のminからmaxまでの合計値は、
java
1 5
6 public int sum(int min, int max){
7 return (int)((max * (max + 1) - min * ( min + 1)) / 2);
8 }
9
もっとスマートにできるかもしれませんが、
これが自分のなかで一番だと思います。
拙い説明失礼しました。