質問: JAVAのオブジェクト指向を勉強・練習している者です。エンジニアとは関係ないような質問をしてすいませんが、 「スッキリわかるJava入門 第2版 (スッキリシリーズ)」の(P475の)「抽象クラスの特別扱い」にて > > Creatureクラスぐらいになると、ものすごくあいまいで「抽象クラスの中の抽象クラス」みたいな感じがしてきますね。 > > > と書かれており > > そうだね。そして、そんな「抽象クラスの中の抽象クラス」だけを特別扱いする文法がJavaにはあるんだよ > > > と書かれているんですが、↓の画像(P474のところ。いろいろ付箋が貼ってあり見づらくてすいません)を見ると ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/e48243938705d17a7d504c75eea8ccaa.jpeg) ↑ この参考書に書いてある、「**抽象クラスの中の抽象クラス**」とは**Creatureクラスのこと**を指しているのでしょうか? 私も頭がちょっとアレなので「抽象クラスの中の抽象クラス」と書いてあった為、少々混乱しました。 つまり、この参考書に書いてある「**抽象クラスの中の抽象クラス**」とは**フィールドもない、抽象クラスだけになるクラス**ということ指しているのでしょうか?
回答: 私はオブジェクト指向でプログラミング出来るつもりです。 ですが、私はモノとコードを同一視したオブジェクト指向の説明で納得したものはありません。 (モノ→モデル→オブジェクトなら、納得出来ます。) 継承元を手繰っていくと、フィールドは減り、メソッドは減るか抽象メソッドになるという点を説明したいのだと思います。 もちろん抽象クラスにの継承元として抽象クラスが定義出来るという点位を憶えておけば良いのでは無いでしょうか? 実際は、javaの抽象クラスの継承元は具象クラスでも良いです。というか、全てObjectクラスと言う具象クラス(抽象クラスでないクラス)を継承してますので、混乱するのは無理もありません。 おそらく、質問者は私とある程度同じタイプの疑問をもつ人なので、モノをオブジェクトに直接割り当てると違和感を覚えるタイプだとおもうので、その手の説明はさっと飛ばしてください。 zuishinさんの言うとおりかもしれません。 > > そうだね。そして、そんな「抽象クラスの中の抽象クラス」だけを特別扱いする文法がJavaにはあるんだよ > > > 質問を読み直したら、ここに繋ぎたかっただけじゃないかと思い当たりました。この先にインターフェイスクラスの説明があるのでは無いでしょうか?(だとすると個人的にはこの表現は不適切な書き方ですが。。。)