Javaプログラミング初心者のためのページ -14ページ目

オーバーライド(2)

スーパークラスで定義したメソッドをサブクラスで再定義することをメソッドのオーバーライドといいます。オーバーライドの条件は以下の2つです。

・戻り値、メソッド名、引数をスーパークラスのメソッドと一致させる
・アクセス制限を強めてはならない


問題:以下のクラスBでクラスAのメソッドをオーバーライドするのはどれか?
A. public void x(){}
B. void X(){}
C. void x(int i){}
D. boolean x(){}

=== ソースコード
class A {
    void x() {
        System.out.println("AX");
    }
}

class B extends A {

}














解答:
A. public void x(){}

オーバーライド(1)

スーパークラスで定義したメソッドをサブクラスで再定義することをメソッドのオーバーライドといいます。実行時はサブクラスで定義したメソッドのみが呼び出されます。


問題:何が出力されるか?
A. AX、BXの順で両方
B. AXのみ
C. BXのみ
D. BX、AXの順で両方

===ソースコード
public class M {
    public static void main(String[] args) {
        B b = new B();
        b.x();
    }
}

class A {
    void x() {
        System.out.println("AX");
    }
}

class B extends A {
    void x() {
        System.out.println("BX");
    }
}











解答:
C. BXのみ

変数のデフォルト値

メンバ変数(インスタンス変数とクラス変数)は宣言しただけで、デフォルト値が格納されます。

・数値の基本データ型のデフォルト値は0
・boolean型のデフォルト値はfalse
・参照型のデフォルト値はnull

ローカル変数は宣言しただけではデフォルト値は格納されません。
何も代入しないで使用すると、コンパイルエラーが発生します。

問題1問題2