Javaの問題~中級~

皆様、お疲れ様です。

Twitterでアンケートをとりましたところ、Javaを学びたい方が多くいらっしゃいました。

要望にお応えするために今後はこのブログで不定期ではありますが

Javaの問題を小出しいきたいと思います。

 

初級、中級、上級レベルにわけて出題していきます。

 

さっそくですが、この記事の中で一問目を出題させていただきます。

最初がいきなり中級ということについては突っ込まないでください(笑)

 

問題

次のプログラムをコンパイル、実行したときの結果として、正しいものを選びなさい。

 

public class Sample {

    protected int num = 10;

}

------------------------------------

package ex1;

 

public class SampleImpl extends Sample {

    public static void main(String[] args){

        System.out.println(num);

    }

}

------------------------------------

 

A. 0が表示される

B.10が表示される

C.コンパイルエラーが発生する

D.実行時に例外がスローされる

 

解答は続きを読む

 答えは「C.コンパイルエラーが発生する」でした。

こちらパッケージと暮らすのアクセス制御に関する問題です。

無名パッケージに属するクラスは、同じ無名パッケージに属するクラスからしかアクセスできません。

 

問題のコードでは、Sampleクラスを継承したSampleImplクラスを定義しています。

SampleImplでは、Sampleに定義されたnumフィールドの値を表示しようとしています。

しかし、設問のコードの場合、Sampleクラスはパッケージ宣言されていないので、

無名パッケージに属しており、一方のSampleクラスではex1パッケージに属していることに着目します。

明示的にパッケージ宣言したクラスから、無名パッケージに属するクラスにアクセスしようとすると、コンパイルエラーが生じます。

 

以上、中級問題でした!

 

今後も好評でしたら別言語などについても検討していきたいと思います!