オーバーライド(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(){}
・戻り値、メソッド名、引数をスーパークラスのメソッドと一致させる
・アクセス制限を強めてはならない
問題:以下のクラス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のみ
問題:何が出力されるか?
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のみ