実務に耐えうる準備をするための項目比較
下記の表1は、前述した書籍の1から6までを、オブジェクト指向プログラミングの基本を知る上で必要と考えた要素の比較表です。前編は「エラーの出にくい」という観点で要素を列挙しましたが、今回は「オブジェクト指向プログラミングを知る上で必須と考えられるもの」を列挙しています。すべての本の目次を洗い出しているわけではなく、オブジェクト指向を学ぶ際の勘所だけを列挙していることに注意してください(表の見方は表下部を参照)。
| 評価項目 | 明解Java | Java言語プログラミングレッスン | やさしいJava | わかりやすいJava | ||||||
| オーバーロード(メソッドの多重定義) | ○ | 260 | 下 | △ | 61 | ○ | 269 | オ | ○ | 208 |
| シグネチャ | ○ | 260 | 下 | △(*9) | 61 | △(*10) | - | オ | △(*10) | - |
| フィールド・メソッドの修飾子 | △(*11) | 11 | 下 | ○ | 32 | △(*11) | - | × | - | |
| デフォルトコンストラクタ | ○ | 218 | 下 | ○ | 18 | ○ | 283 | オ | ○ | 26 |
| カプセル化(情報隠蔽) | ○ | 284 | 下 | ○ | 66 | ○ | 266 | オ | ○ | 63 |
| アクセサ(setter/getter) | ○ | 302 | 下 | ○ | 66 | × | - | オ | ○ | 63 |
| クラス型変数の代入 | ○ | 304 | 下 | ○ | 127 | ○ | 316 | × | - | |
| クラスメソッドのアクセス制限 | ○ | 348 | × | - | ○ | 294 | × | - | ||
| 静的インポート宣言 | ○ | 370 | 下 | ○ | 211 | × | - | × | - | |
| アクセス修飾子protected | ○ | 383 | 下 | ○ | 204 | ○ | 384 | オ | ○ | 174 |
| 一意なパッケージ名 | ○ | 378 | 下 | ○ | 210 | × | - | オ | ○ | 150 |
| 継承 | ○ | 388 | 下 | ○ | 50 | ○ | 336 | オ | ○ | 150 |
| 継承クラスのコンストラクタでのsuper | ○ | 392 | 下 | ○ | 54 | ○ | 343 | オ | ○ | 169 |
| オーバーライド | ○ | 406 | 下 | ○ | 60 | ○ | 352 | オ | ○ | 214 |
| ポリモルフィズム | ○ | 406 | 下 | ○ | 62 | △(*12) | 271 | オ | ○ | 232 |
| アップキャスト(参照型の拡大変換) | ○ | 412 | × | - | × | - | オ | ○ | 184 | |
| ダウンキャスト(参照型の縮小変換) | ○ | 41 | × | - | × | - | オ | ○ | 189 | |
| instanceof演算子 | ○ | 413 | 下 | ○ | 63 | ○ | 386 | オ | ○ | 193 |
| @Overrideアノテーション | ○ | 414 | 下 | ○ | 61 | × | - | × | - | |
| 継承されるものとされないもの | ○ | 417 | 下 | △(*13) | 64 | × | - | オ | ○ | 161 |
| オーバーライド時のメソッドのアクセス制限 | ○ | 418 | × | - | × | - | オ | ○ | 216 | |
| 宣言における修飾子の順序 | ○ | 419 | × | - | × | - | × | - | ||
| 抽象クラス | ○ | 426 | 下 | ○ | 68 | ○ | 380 | オ | ○ | 252 |
| インタフェース | ○ | 454 | 下 | ○ | 106 | ○ | 389 | オ | ○ | 259 |
| インタフェースの配列 | × | - | 下 | ○ | 115 | ○ | 392 | × | - | |
| ラッパクラス | ○ | 500 | 上 | ○ | 71 | ○ | 312 | オ | ○ | 419 |
| 例外の分類と階層 | ×(*14) | - | 下 | ○ | 91 | ○ | 440 | オ | ○ | 280 |
| チェック例外 | ×(*14) | - | 下 | ○ | 92 | × | - | オ | ○ | 280 |
| 非チェック例外 | ×(*14) | - | 下 | ○ | 94 | × | - | オ | ○ | 281 |
| finallyブロック | ×(*14) | - | 下 | ○ | 98 | ○ | 435 | オ | ○ | 286 |
| チェック例外が継承関係の時の記述順序 | ×(*14) | - | × | - | × | - | オ | ○ | 296 | |
| オーバーロード・オーバーライド時の例外 | ×(*14) | - | × | - | × | - | オ | ○ | 310 | |
- *9 仮引数の個数も同じであることが明記されていない。
- *10 シグネチャという言葉が欲しい。
- *11 一か所にまとめられていない。
- *12 p359でも多態性(ポリモルフィズム)の説明があるが、これだけで理解するのは苦しい。
- *13 インスタンス初期化子、静的初期化子、コンストラクタが継承されないことが明記されていない。
- *14 p505の「おわりに」で「他の書籍で取り上げる」との記述あり。
表の見方
- 『改訂第2版 Java言語プログラミングレッスン』は上下巻に分かれており、どちらに記載されているかを「上」・「下」で、『わかりやすいJava』は入門編とオブジェクト指向編に分かれており、どちらに記載されているかを「入」・「オ」という表記で区別しています。
- 数字は○や△の場合、記載のあるページ数を示しています。
- ○、△、×とあるのは適切な説明があるかどうかを示しています。
- 適切:○
- 不十分:△
- 説明自体がない:×
なお、△や×に*(アスタリスク)が付いている番号は、表の後に注釈があるものです。
