【初心者】Java質問・相談スレッド109【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0284デフォルトの名無しさん
2007/11/29(木) 15:20:14A1|public class Oya {
A2| protected int v1;
A3| public Oya () {
A4| v1 = 10;
A5| }
A6| public void printValue() {
A7| System.out.println("v1=" + v1);
A8| }
A9|}
B1|public class Ko extends Oya {
B2| public Ko () {
B3| }
B4|}
C1|public class Main {
C2| public static void main(String[] args) {
C3| Ko ko = new Ko();
C4| ko.printValue();
C5| }
C6|}
実行すると v1=10 となるですが、これがよくわかりません。
私は以下のように考えていました。
・Koのスーパークラスの Oya のインスタンス変数v1が、int なので 0 で初期化される
・Oyaの引数なしコンストラクタ内では、v1 に 10 を代入しているが、
Ko の引数なしコンストラクタが呼ばれていて、Oya の引数なしコンストラクタを
オーバーライドしているので、v1 は 0 のままのはず
・printValue() では、v1=0 が表示されるはず
サブクラスで引数なしコンストラクタを定義していて、そのなかで super() を書かなくても、スーパークラスの引数なしコンストラクタが呼ばれるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています