Javaの認定資格「Oracle Certified Java Programmer, Gold SE 7」。通称JavaGoldのオリジナル問題を紹介していきたいと思います。
前回の解答
まずは、前回の解答から。
正解は「(3)」となります。
アクセス修飾子は公開範囲の広い順に「public→protected→デフォルト(指定なし)→private」となります。
publicとprivateは簡単に覚える事ができると思いますが、問題はprotectedとデフォルト(指定なし)です。
この順番と以下のキーワードを抑えておくと簡単に思い出すことができます。
- 同一パッケージ内のクラスから利用可能
- 継承したサブクラスから利用可能
protectedの方がアクセス範囲が広いわけですから、protectedは上記の2つを兼ね備えたアクセス修飾子になります。
逆に、デフォルト(指定なし)はアクセス範囲が狭いわけですので、上記の1つ目である同一パッケージからのみアクセス可能となります。
また合わせて、「アクセス修飾子にはデフォルト(指定しない)」というものも存在することを頭の片隅に入れておきましょう。
アクセス修飾子をつけることができるのは以下の4つです。
- クラス
- コンストラクタ
- メンバ変数
- メソッド
これらの前にアクセス修飾子がないときは「要注意」です。
では、もう1つアクセス修飾子に関わる問題をいきましょう。
問6
以下のプログラムの実行結果として正しいものを選んでください。
package techpjin;
public class Lesson6 {
public static void main(String[] args) {
SubClass1 s1 = new SubClass1();
s1.method();
SubClass2 s2 = new SubClass2();
s2.method();
}
}
class SuperClass{
void method() {
System.out.print("super class called. ");
}
}
class SubClass1 extends SuperClass{
void method() {
System.out.print("sub class1 called. ");
}
}
class SubClass2 extends SuperClass{
public void method() {
System.out.print("sub class2 called. ");
}
}
- sub class1 called. sub class2 called.
- sub class1 called.
- sub class2 called.
- 何も出力されない
- コンパイルエラーが発生する
- 実行時エラーが発生する
解答・解説・問7はこちら