extends?implements?(class?interface?)
https://oshiete.goo.ne.jp/qa/111300.html
教えて!gooにめっちゃ分かりやすい回答があった。
・extendsとimplementsの違いは?
classを引き継ぐのがextends(継承)。
interfaceを実装するのがimplements(実装)。
・じゃあclassとinterfaceの違いは?
クラスは実体を持てる。つまりインスタンスを生成できる。
インターフェースは実体を持てない(抽象メソッドしか持たない)。
→implementsによって「実装」してやらないと使えない
・実体を持てないインターフェースって別にいらなくない?クラスでよくない?
割とその通り。けどJavaでは複数のクラスを引き継げないからどうしようってことで作られたのが「インターフェース」。
複数のクラスを引き継ぐことはできないけど、引き継ぎ(extends)と実装(implements)は同時にできる。複数のインターフェースをimplementsすることもできる。
・インターフェースのメリットそれだけ?
オブジェクト指向の原則の一つ「カプセル化」のために必要なものらしい。
(カプセル化…データ構造の内部の情報を外部から直接参照できないようにし,
代わりにデータ操作のためのインターフェースを外部に提供すること。)
つまりインターフェースを実装(implements)したクラスのメソッドはprivateで隠し、
中身のない(抽象メソッドだから)インターフェースだけ外部に見せる(こういう機能もってるよ~)ってこと?
こういう概念とか設計思考的なものは実際にプログラム組まないと本当に理解することはできないんだろーな。