Javaの復習のために「Java言語プログラミングレッスン 第3版」の14章 インタフェース と 17章 パッケージ を読みました。

曖昧だった個所が明確になったので忘れないようにメモしておきます。

・extendsの後には1つしか書けずimplementsの後には複数書けると丸暗記していたが不正確だった。Javaでは実装は単一継承のみで名前は多重継承可能なので、インタフェースがインタフェースを継承する場合はextendsの後に複数(のインタフェース名を)書ける。

・インタフェースはインスタンスを作れないがインタフェースの配列は作れる。その際の表記が似ている(配列を作るのにnewを使用)ので注意。

・packageの後に書くのはパッケージ名だが、importの後についパッケージ名を書かないように注意。

・import aaa.*はパッケージaaa内のクラスとインタフェースに合致という意味であってパッケージaaaのサブパッケージに合致という意味ではない。

・パッケージはクラス階層とは無関係。

・パッケージaaaとサブパッケージaaa.bbbの名前空間は無関係。
「はじめてのOSコードリーディング」第Ⅱ部(プロセス)のexec()はボリュームが大きいので後に残していたのですがやっと読むことができました。プロセスの概要は掴めたと思います。

次ですが、第Ⅲ部の割り込みは既に何度かチャレンジしていますが非常に難しいのとまた読み直しだとだれてしまうので一旦頭を冷やす意味もあって第Ⅳ部(ブロックI/Oシステム)を読むことにします。

第Ⅳ部は読書会に参加できなかった間に終わってしまった箇所なので新鮮な気持ちで取り組めると思います。
Javaの復習のために「Java言語プログラミングレッスン 第3版」の12章 スーパークラスとサブクラス を読みました。

サブクラスのインスタンスをスーパークラス型?の変数に代入し、サブクラスにしかないメソッドを呼び出そうとするとコンパイルエラー、両方にあるメソッドを呼び出そうとするとサブクラスのメソッドが呼び出される。

このようになっているのは、オブジェクト指向的には当然そうなる、そうでないとこういう点で不都合があるということなのか、Javaではそう決めただけでどっちもありなのかが分かりません。

今のところは丸暗記しておきますが、結構本質的な話のように感じるので気になっております。