Abstract ClassとInterfaceおさらい
できることできないことリスト
Abstract Class | Interface | |
---|---|---|
定義できる? | No (型にはなれる) | No |
fieldもてる? | Yes | No(できるけど強制public static final) |
メソッド | private/public/protected | 強制public |
継承 | super classは一つのみ | いくつでもOK |
Abstract ClassとInterfaceの使い分け
以下が当てはまる場合はAbstract Classを使う
- 抽象クラスを似ているクラスの間で共有したいとき。
- 抽象クラスから継承されたクラスが似たようなメソッドとフィールドを持つとき。
- Non-static non-finalなフィールドを使うとき。
以下が当てはまる場合はInterfaceを使う
- 関係ないクラスがこのインターフェースを定義するとき(Comparableなど)。
- 誰が定義するかわからないとき、もしくは気にしない時。
- 多重継承したいとき。