- ベストアンサー
抽象クラスのオブジェクトを生成できない理由は?
・抽象クラスは、なぜ(オーバーライドしないと)オブジェクトを生成できないのでしょうか? ・インタフェースみたいに、抽象メソッドしか宣言することができないなら話は分かるのですが… ・抽象メソッドでない普通のメソッドを実装できるのなら、オブジェクトを生成してくれても良いと思うのですが… ・そういう問題ではない?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>・抽象メソッドでない普通のメソッドを実装できるのなら、オブジェクトを生成してくれても良いと思うのですが… これは言語仕様の話で、Javaはクラス単位でしか定義できません。 ですから、抽象メソッドの有無でインスタンスの生成を分けるといったことができません。
その他の回答 (3)
- myuki1232
- ベストアンサー率57% (97/170)
質問が間違っています。 オブジェクトを生成できないクラスを抽象クラスというのですから、抽象クラスがオブジェクトを生成できないのは定義通りで、当たり前のことです。 むしろ「なぜ抽象クラスというものがあるのか?」と問うべきです。
お礼
回答ありがとうございました。 >当たり前のことです ・その通りだと思うのですが、言語仕様だとしたら、Javaの仕様書(?)のどこに書いているか等、知りたかったです
- root139
- ベストアンサー率60% (488/809)
> 抽象クラスは、なぜ(オーバーライドしないと)オブジェクトを生成できないのでしょうか? 実装を持たない抽象メソッドの記述が可能という時点で、実装の無いメソッドの実行をどうするのかという問題が出てくると思いますが・・・。 例えば、 public abstract class AbstractHoge { public abstract String methodA(); } という抽象クラスが有って、 AbstractHoge hoge = new AbstractHoge(); // 抽象クラスがインスタンス化可能と仮定 System.out.println(hoge.methodA()); というコードが書けた場合、どの様な動作/出力が正当だと考えますか?
お礼
回答ありがとうございました。 抽象メソッドを含まない抽象クラスなら、オブジェクト生成出来ないのだろうか、と思い、質問してみましたー
- Tacosan
- ベストアンサー率23% (3656/15482)
抽象メソッドを呼び出せないようにするため, ではないかな.
お礼
回答ありがとうございました。 確かにその通りですね
お礼
回答ありがとうございました。 大変参考になりましたー