Java入門書のアウトプットメモ
入社から今まで研修+現場でぶっつけ学習だったので、「Java本格入門 モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで」
を購入。読みつつアウトプット。
まだ読み始めだが、以前にレビュで指摘されて「ああそうなのか」くらいにしか考えていなかった内容も載っていたりで、買ってよかったと思う。
修飾子
(モノによると思うけど)よく見るものをピックアップ
□abstract修飾子:クラスやメソッド、IFが抽象的であることを指定。(例、メソッドの宣言部のみで中身がない)
→abstractメソッドを持つクラスは必ずabstractクラスである必要がある。
また、必ず自クラスを継承したクラスを作成し、中身を定義しなければならない(abstract='抽象'のままではNG)
□static修飾子:クラスがインスタンス化されていなくてもメンバーにアクセスできる。
→クラス名.メンバー(メソッドやフィールド)名でアクセスできる。
□final修飾子:メンバーの上書きを禁止する
→フィールドに指定した場合・・・そのフィールドの値上書きを禁止
メソッドに指定した場合・・・オーバーライド禁止
クラスに指定した場合・・・サブクラス化を禁止
※オーバーライドとオーバーロード
オーバーライド:サブ(子)クラス側で、スーパー(親)クラスのメソッドを書き換えること。
親クラス
public class Super{
public static void print(){
System.out.println("私は親クラスです。");
}
}
子クラス
public class Sub{
public static void print(){
System.out.println("私は子クラスです。");
}
}
とした場合、Subクラスのprintメソッドの実行結果は「"私は子クラスです。"」となる。
オーバーロード:メソッド名が同じだが、引数の型や引数の個数が異なるメソッドを定義すること。
public static void print(int count){
System.out.println(count + "個の商品を注文しました。");
}
public static void print(String name, String item){
System.out.println(name + "さんは" + item + "を注文しました。");
}
命名規則
キャメルケース:単語の区切りを大文字で記述する記法。
例)getUserName
※先頭文字を大文字にしたものはパスカルケースと呼ぶこともあるらしい(例:GetCustomerName)
スネークケース:大文字で、単語をアンダースコア(_)で記述する記法。
例)OUTPUT_FILE_NAME
原則、下記のルール(なはず)
クラス名→大文字始まりのキャメルケース
変数名→小文字始まりのキャメルケース
定数名→スネークケース
変数は名詞、メソッドは動詞
booleanの変数名に”isXXX”は避けるべき。
また、booleanの変数名にフラグ(flg)はよく用いられるが、”flg”単体での命名は何を示すか不明瞭であるため避ける。
//状態を管理する変数(名詞で命名)
private boolean applyFlg = false;
//状態を問い合わせるメソッド(動詞で命名)
public boolean isApplied(){
return this.applyFlg;
}