Contents
staticメソッド
静的なメソッドで名前付き定数やユーティリティメソッドなどインスタンスを生成することなく使用するメソッド。
どちらかというと例外的な使い方です。
1 2 3 4 5 6 7 8 |
//定数に対して使う public static final HOGE=200; ClassName.funcA(); public static void funA(){ ・・・・・・・・・ } |
インスタンスメソッド、インスタンス変数にアクセスできないなどのデメリットがある。
アクセス修飾子
public・・・無制限にアクセスできる
(何も記述しない)・・パッケージプライベート 同じパッケージの中からアクセスできる
protected ・・パッケージに加え、継承したクラスのアクセスも許可する
private・・自分自身からしかアクセスさせない
なお変数のアクセス制限はクラスのアクセス制限が適用されてからになるので、publicがついていてもクラス自身がディフォルトスコープの場合、パッケージ外からアクセスできない。
抽象クラス
- abstract修飾子がつくことで抽象メソッドを持つことができる(つけないと持てない)
- インスタンス生成が不可能になる。(継承を前提とすることになる)
オーバーライド(親クラスのメソッドを上書きすること)
- 同じシグネチャ(メソッド名と引数型)のメソッドは継承先のクラスで再定義することが可能。
- ただしいくつか原則がある。
- シグネチャ(メソッド名と引数型)を変更することはできない
- アクセス修飾子は変更できるが、元のアクセス修飾子よりも緩くなければいけない
- 戻り値は変更できるが、元の型のサブタイプでなければいけない。
- throws節は削除または変更できるが、変更する場合、元の型のサブタイプでなければいけない
- 元のメソッドがfinalだとオーバーライドできない。
- abstractがついている場合、必ず継承しなくてはいけない
- 継承した場合アノテーションで@overrideをつける
- オーバーロードと勘違いしないように
オーバーロード(同名メソッドを複数もつこと)
- 同名のメソッドを定義できるが、引数、戻り値が違っても構わない。
- ルールとしては戻り値が全部一緒なものはNG。ルールはこれだけ
interface
- フィールドには暗黙でpublic static final
- メソッドにはpublic abstractが付く