Webシステム開発の雑多なアウトプット

AWS、プログラム、OSS等を中心に良かった本も。

規約

  • 識別子、キーワード
  • ・識別子の先頭に数字は使えない。_と$はOK ・識別子には文字数の制限がない ・大文字、小文字は区別される。(例)valueValueは別物 ・キーワードは識別子として使えない ・goto,assert,volatile,enum,throws,throw,final,finallyなどはキーワード ・signed,unsignedはキーワードではない
  • JavaBean命名規則
  • ・クラス名:Dog (名詞) ・インターフェース名:Runnable (形容詞) ・メソッド:getValue(動詞+名詞) ・変数:buttonWidth ・定数:MIN_HEIGHT(大文字+_)
  • クラス
  • ・publicなクラスは1ファイルに1つだけ ・publicでないクラスは複数定義可能 ・publicクラスとファイル名を同じにする ・コメントは任意の行の先頭or末尾に記述できる ・import文とpackage文はそのファイル内の全てのクラスに適用される ・publicなクラスは全てのパッケージの全てのクラスからアクセスできる。 但し、別パッケージからアクセスする場合はimportする必要がある ・デフォルトアクセスのクラス(public指定なしのクラス)は同じパッケージ内のクラスからしかアクセスできない ・final宣言したクラスはサブクラス化できない→オブジェクト指向の重要な利点である拡張性を失う ・abstractで宣言してクラスを抽象クラスと呼ぶ ・抽象クラスはインスタンス化できない→拡張(サブクラス化)して使う ・メソッドに一つでもabstractを宣言した場合、クラスをabstract宣言しないといけない ・逆にabstractで宣言したクラスに抽象メソッドが無くても問題ない
  • インターフェース
  • ・インターフェースには抽象メソッドしか定義できない ・インターフェースの全てのメソッドは暗黙的にpublicでabstract(下記は同じ)   void bounce();   public abstract void bounce(); ・インターフェースの全ての変数は暗黙的にpublicでstaticでfinal(下記は同じ)   int HOGE = 1;   public static final int HOGE = 1; ・インターフェースのメソッドにはstatic, final, strictfp, nativeのいずれも指定できない ・他の複数のインターフェースを拡張(extends)できる ・インターフェース以外は拡張(extends)できない ・抽象クラスの最初の具象サブクラスは、全ての抽象メソッドを実装しなければならない  →オーバーロードとなる問題に注意。引数が違う場合は”実装”とみなされずオーバーロード扱いとなりコンパイルエラーとなる
  • アクセス修飾子
  • ・アクセス修飾子にはpublic, protected, デフォルト(指定なし), privateの4種類がある ・privateで宣言されたメンバーはサブクラスには継承できない。但し同じ名前で宣言できる   →サブクラスからは完全に見えないために、別物となる ・デフォルトメンバーにアクセスできるのは、同じパッケージ内のクラスからのみ ・protectedメンバーにアクセスできるのは、同じパッケージ内のクラス+サブクラス  →親子で別パッケージの場合、インスタンス化した場合は親のprotectedメンバーにアクセスできない(直接ならアクセス可能)  →つまりパッケージの外部にあるサブクラスからは継承を介さなければprotectedメンバーにアクセスできない ・デフォルトメンバーの場合は親と同じパッケージでないとアクセスできない ・ローカル変数(メソッド内変数)にはfinalしか指定できない
  • メソッド
  • ・abstract宣言されたメソッドは中括弧ではなくセミコロンで終わる   abstract void methodA(); ・final宣言されたメソッドはオーバーライドできない ・private宣言されたメソッドは別物扱いとなるためコンパイルエラーとならない ・可変長引数リスト 0個以上のパラメータを受け取る  正   void method(int... foo){}   void method(char c, int... foo){}  誤   void method(int foo...){}   void method(int... a, int... b){}   void method(int... foo, char c){}