回答編集履歴
2
追記
answer
CHANGED
@@ -37,4 +37,5 @@
|
|
37
37
|
|
38
38
|
このようにすることで`FunctionSet02(int y, int m, int d)`から、暗黙でデフォルトコンストラクタが呼ばれるためコンパイルは通ります。
|
39
39
|
しかし、このコンストラクタを用意することでyに値が設定されていない状態でFunctionSet01のインスタンスを作成できてしまうようになるため、この方法はお薦めできません。
|
40
|
-
FunctionSet01はyが初期化されていない状態でインスタンスが作成されてはいけないクラスだからです。
|
40
|
+
FunctionSet01はyが初期化されていない状態でインスタンスが作成されてはいけないクラスだからです。
|
41
|
+
(`FunctionSet01 instance = new FunctionSet01()` を許してはいけない)
|
1
誤字修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
継承をする場合、必ず親クラスのコンストラタを実行しなければなりません。
|
2
|
-
独自のコンストラクタを何も定義していなければ、内部で自動で作られ
|
2
|
+
独自のコンストラクタを何も定義していなければ、内部で自動で作られたデフォルトコンストラクタ(引数なしコンストラクタ)が呼ばれるため意識することはありませんが、今回は独自のコンストラクタを定義しているため、明示的に親のコンストラクタを呼ぶ必要があります。
|
3
3
|
|
4
4
|
つまり`FunctionSet02(int y, int m, int d)`から親のコンストラクタを呼ばなければならないということです。
|
5
5
|
|