どういうケースでどちらを使うかとか知りたかった。 まず結論からいうと多様な議論があるようだった。 だからこれを読んだかたは鵜呑みにせずにいっしょに考えてもらいたい。 結論、インタフェースって? クラスの型(仕様)を定義するもの。 カプセル化と多態性を要求する意味あいが強い。 結論、抽象クラスって? 継承関係をもつ実装の再利用をできる。 継承と多態性を要求する意味あいが強い。 インタフェースとは インタフェースのメンバ変数は必ず定数。自動でfinal public staticとなる。 抽象メソッドのみ記述可能。自動でpublic abstractとなる。 実装クラスは、全ての抽象メソッドを実装する必要ある 多重継承できる。ミックスインというらしい。 多重継承できるけど、メンバ変数は一意でなければならん メソッドの場合は実装をもたないのでダブってても競合せず問題なし 実装クラスはアップキ
![インタフェースと抽象クラスどっち使ったらいいんだ? - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/3d25071775e67acab74f5843598a3ec28cda15d6/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgyJUJGJUUzJTgzJTk1JUUzJTgyJUE3JUUzJTgzJUJDJUUzJTgyJUI5JUUzJTgxJUE4JUU2JThBJUJEJUU4JUIxJUExJUUzJTgyJUFGJUUzJTgzJUE5JUUzJTgyJUI5JUUzJTgxJUE5JUUzJTgxJUEzJUUzJTgxJUExJUU0JUJEJUJGJUUzJTgxJUEzJUUzJTgxJTlGJUUzJTgyJTg5JUUzJTgxJTg0JUUzJTgxJTg0JUUzJTgyJTkzJUUzJTgxJUEwJUVGJUJDJTlGJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0yYjNjNjlhMzQ3OTBlMTlkZjk5Yjg0NjdiZGE0NjUyNA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwdXFpY2hpJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz05N2VmOTRmYzRiZjZjMGE0ZDdkMzI5MTA5ZWQ1YzQ5MA%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dd9be04a1835ae141b02c0592bd8c165c)