【Java】「実装」と「振る舞い」の違い。クラスはオブジェクトではない。 パーフェクトJava学習感想文 その3
パーフェクトJavaを読んで改めてJavaを振り返り中。
息も絶え絶えです。
経緯については学習記録その1をご参照ください。
以下、学んだこと。
「実装」と「振る舞い」の違い
「実装」と「振る舞い」は別の概念。
共通した振る舞いのことを「型」と呼ぶ。
こうやって別物だと理解できれば、
インタフェースや抽象クラスも「型」であることが理解できる。
「クラス」は「型」の部分的な概念。
型定義を行う言語機能としてクラスとインタフェースの2つがあり、オブジェクトと変数が型を持ちます。
なるほど。
言語機能によらずに定義されている型が「基本型」
クラス・インタフェースではない型の定義があって、それが基本型。
基本型はメソッドを持たない。
基本型は特別なんです。 基本型はメソッドを持ちませんが 専用の演算子は書けます。 123 + 123 とか。
by師匠。
メソッドの実行は変数だけができる、という訳ではない
本の中にこの一文が。
たしかにそうだ。
- レシーバーが変数でないがメソッドを実行できるケース
→レシーバーがオブジェクトであり、変数に代入されていない場合
"hoge".length(); ←hogeはStringオブジェクト。
- レシーバーが変数であるがメソッドを実行できないケース
→変数が基本型を格納している場合
int a = 123; ←aの格納している123は基本型のためメソッドを持たない。