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はこちら