標題のとおりなのですが、抽象メソッドを持たない抽象クラスを作る意義はどこにあるのでしょうか。
言語による違いはあるとは思いますが、そのような抽象クラスを作るメリットとデメリットを教えていただきたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
いくつかの具象クラスがあって、その振る舞いを抽象クラスにまとめたら、たまたまそのような抽象クラスができることはあるかもしれません。
メリットとしては親クラスとしての記述が1カ所になる事や多態が使える等のメリットがそのままあると思います。それに加えて、インスタンス化ができないので、継承しているクラスがあることを示しているというのがメリットだと思います。
そして、デメリットも親クラスと同じくで、一番大きいと思うのはインスタンスの実態がどのクラスなのか分かりずらすなるという点です。抽象クラスにすることは、その点で実際のインスタンスの親クラスと勘違いすることがないので少しマシですが、コンストラクタの呼び出しがどこか調べる必要があるので、すこしばかり手間がかかります。
インターフェイスと移譲を使った方法と比べてみる必要がある書き方だと思います。
投稿2018/02/09 02:15
総合スコア2883
0
引数の型制限とかには使えます
メソッドやプロパティを持っているかどうかで条件分岐するから
メソッドやプロパティの保持を強制はしたくない
だけどなんでもかんでも受け付けたいわけじゃない
みたいな感じの時に使えます
デメリットは、抽象クラスを複数継承できない言語だと
継承枠が埋まっちゃうとかでしょうか
投稿2018/02/08 10:35
総合スコア7804
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/02/10 10:17
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/02/10 10:21