• ベストアンサー

抽象クラスのオブジェクトを生成できない理由は?

・抽象クラスは、なぜ(オーバーライドしないと)オブジェクトを生成できないのでしょうか? ・インタフェースみたいに、抽象メソッドしか宣言することができないなら話は分かるのですが… ・抽象メソッドでない普通のメソッドを実装できるのなら、オブジェクトを生成してくれても良いと思うのですが… ・そういう問題ではない?

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

  • ベストアンサー
  • teketon
  • ベストアンサー率65% (141/215)
回答No.3

>・抽象メソッドでない普通のメソッドを実装できるのなら、オブジェクトを生成してくれても良いと思うのですが… これは言語仕様の話で、Javaはクラス単位でしか定義できません。 ですから、抽象メソッドの有無でインスタンスの生成を分けるといったことができません。

re97
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

その他の回答 (3)

  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.4

質問が間違っています。 オブジェクトを生成できないクラスを抽象クラスというのですから、抽象クラスがオブジェクトを生成できないのは定義通りで、当たり前のことです。 むしろ「なぜ抽象クラスというものがあるのか?」と問うべきです。

re97
質問者

お礼

回答ありがとうございました。 >当たり前のことです ・その通りだと思うのですが、言語仕様だとしたら、Javaの仕様書(?)のどこに書いているか等、知りたかったです

  • root139
  • ベストアンサー率60% (488/809)
回答No.2

> 抽象クラスは、なぜ(オーバーライドしないと)オブジェクトを生成できないのでしょうか? 実装を持たない抽象メソッドの記述が可能という時点で、実装の無いメソッドの実行をどうするのかという問題が出てくると思いますが・・・。 例えば、 public abstract class AbstractHoge { public abstract String methodA(); } という抽象クラスが有って、 AbstractHoge hoge = new AbstractHoge(); // 抽象クラスがインスタンス化可能と仮定 System.out.println(hoge.methodA()); というコードが書けた場合、どの様な動作/出力が正当だと考えますか?

re97
質問者

お礼

回答ありがとうございました。 抽象メソッドを含まない抽象クラスなら、オブジェクト生成出来ないのだろうか、と思い、質問してみましたー

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

抽象メソッドを呼び出せないようにするため, ではないかな.

re97
質問者

お礼

回答ありがとうございました。 確かにその通りですね

関連するQ&A

専門家に質問してみよう