Javaの認定資格「Oracle Certified Java Programmer, Gold SE 7」。通称JavaGoldのオリジナル問題を紹介していきたいと思います。
前回の解答
まずは、前回の解答から。
正解は「(5)」となります。
(5)以外の説明はカプセル化の説明としてどれも正しいものになります。特に抑えておいていただきたい選択肢は以下の2つでしょうか。
- カプセル化されたクラスでは、インスタンス変数に対してむやみにアクセスされることを防ぐためにアクセス修飾子を「private」にすることが多い
- カプセル化されたクラスでは、インスタンス変数を操作するためのメソッドはアクセス修飾子を「public」にすることが多い
以下がカプセル化が正しく行われているクラス例です。
package techpjin; public class Lesson7 { public static void main(String[] args) { Car c = new Car(); } } class Car { private String color; public String getColor() { return color; } public void setColor(String color) { this.color = color; } }
getColor()メソッドを「ゲッター」、setColor()メソッドを「セッター」と呼びます。実際のJava開発の中でも非常によく登場するテクニックです。
このようにコーディングすることで、(6)や(7)といったメリットが生まれてきます。
カプセル化の定義、実際のプログラム、メリットを関連付けて覚えておきましょう。
カプセル化の説明として誤っている(5)は、ポリモーフィズム(多様性、多態性)に関する説明になります。カプセル化を行っただけでは、オブジェクトの結びつきが弱く(疎結合)になるという効果はありません。(ただし、疎結合を行う事によるメリットはプログラムの再利用性が高まるということで間違いありません。)
問8
final修飾子の説明として間違っているものを選んでください
- final指定されたクラスをもとにサブクラスは作成できない
- final指定されたメソッドを、サブクラス側でオーバーライドできない
- final指定された変数は、定数となる
- final指定された変数は宣言時に初期値を代入しておかないとコンパイルエラーとなる
問8の解答・解説と問9はこちら