Java Gold SE7対策問題 – 問6


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. ");
	}
}
  1. sub class1 called. sub class2 called.
  2. sub class1 called.
  3. sub class2 called.
  4. 何も出力されない
  5. コンパイルエラーが発生する
  6. 実行時エラーが発生する

解答・解説・問7はこちら

  • このエントリーをはてなブックマークに追加

PAGE TOP