Javaの認定資格「Oracle Certified Java Programmer, Gold SE 7」。通称JavaGoldのオリジナル問題を紹介していきたいと思います。
前回の解答
まずは、前回の解答から。
正解は「(1)」となります。
特にひねりの無い問題のように感じるかもしれませんが、勉強がある程度進んでいる方ほど引っかかりやすいかもしれません。
SuperClassとこのクラスを継承しているサブクラスが2つ(SubClass1、SubClass2)が定義されています。
それぞれのサブクラスではスーパークラスで定義されているmethod()がオーバーライドされていますので、
実行結果は(1)が正解となります。
注目していただきたい点は、SubClass2でオーバーライドしているmethod()のアクセス修飾子です。
スーパークラスで定義しているmethod()はアクセス修飾子がついていないため、デフォルト(指定なし)になっており異なるアクセス修飾子となっています。
この際には、以下のルールが適用されます。
- メソッドをオーバーライドする際には、より広い公開範囲のアクセス修飾子に変えることができる。より狭い範囲への変更は不可(コンパイルエラー)
間違えて(5)を選んでしまわないようにしましょう。
問7
Javaにおけるカプセル化について間違っているものを選んでください。
- カプセル化とは、属性と操作を一体化させることである。
- カプセル化されたクラスでは、インスタンス変数に対してむやみにアクセスされることを防ぐためにアクセス修飾子を「private」にすることが多い
- カプセル化されたクラスでは、インスタンス変数の値を変更する手段としてメソッドが別途作成される事が多い
- カプセル化されたクラスでは、インスタンス変数を操作するためのメソッドはアクセス修飾子を「public」にすることが多い
- カプセル化を行うことで各オブジェクトの結びつきが弱くなり、プログラムの再利用性が高くなる
- カプセル化を行うことで個々のオブジェクトの独立性が高まり、オブジェクト内部の変更が外部に影響しにくくなる。
- カプセル化を行うことでソフトウェアの保守性や開発効率が高まり、プログラムの部分的な再利用も安易になる。
解答・解説・問8はこちら