27行目: | 27行目: | ||
==オーバーライド== | ==オーバーライド== | ||
* <u>toString</u>:自作クラスのインスタンス情報を簡単に参照できるようになる | * <u>toString</u>:自作クラスのインスタンス情報を簡単に参照できるようになる | ||
* <u>equals</u> | * <u>equals</u>:自作クラスをコレクションに格納するときはオーバーライド | ||
* <u>hashCode</u>:HashSetなどが上手く動作しない時にはオーバーライド | * <u>hashCode</u>:HashSetなどが上手く動作しない時にはオーバーライド | ||
* <u>compareTo</u>:Comparable を実装すると、Collections.sort が使える | * <u>compareTo</u>:Comparable を実装すると、Collections.sort が使える |
2019年7月2日 (火) 09:52時点における版
- オブジェクト指向の真髄:コードの徹底した重複排除+クラスの擬人化
- Javaコードで重複箇所がある → 概念的、機能的にもっと整合整理できる
- 全て英語。シンプルで美しく脳に正しいイメージを伝える英語を使う
クラスの整理
ファイル
- フォルダ1 (SuperClass) -> フォルダ2 (SuperClass) -> SubClassファイル群と階層整理ができる
- 階層整理をすると各クラス群の役割状況、ポリモやメソッド等の使い回し状況などがtree俯瞰できる
メンバ
- 静的メンバ → フィールド → コンストラクタ → メソッド → 定石オーバーライド/ゲッタセッタ
命名規則
- クラスには体を表す命名を。フィールドには属性を表す名詞を、メソッドには動きを表す動詞を付ける
- メソッドはpublicで外部利用。privateで内部利用。オーバーライドを希望する時はabstractを付ける
- インスタンス変数名は宣言されてる型の方のクラスのイニシャルを利用(PreparedStatement: ps)
- イニシャルだと変数名が1文字になってしまう場合に限り子音3文字にする(Connect: cnc)
- 2体目のインスタンスから変数名の後に数字をつけ始める(ps2)
- 自作クラスのインスタンス名は先頭3文字にする(Monster: mon)
- 配列変数名は複数形(s)にする。配列には複数のデータが格納されているので
- その他の変数名は格納データの内容を適切に表すものにする
- プリミティブ型の変数名は1文字(String: s, int: i)
外部リソース
- ファイルを読み書きするときはバッファリングを併用
オーバーライド
- toString:自作クラスのインスタンス情報を簡単に参照できるようになる
- equals:自作クラスをコレクションに格納するときはオーバーライド
- hashCode:HashSetなどが上手く動作しない時にはオーバーライド
- compareTo:Comparable を実装すると、Collections.sort が使える
- clone:Cloneble を実装すると、インスタンスを複製できるようになる
チェックリスト
- 等価判定される自作クラスのequalsは全てオーバーライドされているか?