• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:abstract クラスについて)

abstract クラスについて

このQ&Aのポイント
  • abstract クラスは、共通のメソッドやフィールドを持つ複数のクラスを一括管理するためのクラスです。
  • abstract クラスを利用することで、処理の共通化や再利用性の向上、プログラミングの作業量の軽減などの利点があります。
  • 具体的な処理内容は各サブクラスで実装することができ、エラーの種類に関わらず共通の処理を行うことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

abstractの存在意義は、「そのクラスのインスタンスの生成を禁止する」ことにあります。 ErrorCにabstractがつかないと、「ErrorCのインスタンス」を作ることが「できて」しまいます。 まあ作れてもかまわない場合もあるのですが、作りたくない場合も多々あります。 この場合だとErrorCのインスタンスが発生すると、 「あなたいったい何のエラーなの」 「いや、決まってないんだけど、とにかくエラーなんです」 「とにかくエラーじゃ困るよ。エラーだったら何のエラーか言ってもらわないと」 「いやほんとに単なるエラーで、何の種類のエラーか決まってないんです」 ということになります。

その他の回答 (2)

回答No.3

最近abstractクラスを使っていて気づきました. 他人のソースを見るとき,abstractクラスを見ると一通りそのクラスの機能がわかる. もう1つ,代表となる働きをするクラスをabstractにすると,他でその働きをするクラスを複数個作ったときに統一しやすい. 見当外れかな!?(゜ロ゜;)

daisy_k
質問者

お礼

ranxさん、liar_adanさん、shotaro777さん、ご回答ありがとうございました。 お礼が遅くなりましたことと、まとめてのご報告、失礼ですがお許し下さい。 おかげさまで、自分なりにいろいろと演習問題を解いてみた結果、 なんとなくですが、abstract クラスを使用する利点が分かりました。 (所詮演習レベルですが) 実際に現場で開発、となると、当然セキュリティの問題も深刻な問題に なるでしょうし、アクセスレベルのことも掴み易くなるのでしょうね。 独学ですと、ついつい、「動いたからいいや」になってしまって…。 でも、これからも頑張って学習していこうと思います。 ご教授ありがとうございました。

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

質問の例で、ErrorCクラスがabstractクラスで無い場合、 つまりErrorCクラスにabstractメソッドが宣言されていない場合、 次のような記述はできません。 class CertainClass{ void doWithError(ErroC certainError) { boolean judge = certainError.errorKind(); ..... } } certainErrorが具体的にどのようなエラーなのかは分かりませんが、 それでもerrorKind()というbooleanを返すメソッドがあることは 分かっているので、それが利用できるわけです。

関連するQ&A