##はじめに
エンジニアとして働き始めはやくも5ヶ月目、そろそろ資格をとろうかと。。。ということで!「Oracle認定JavaSE Silver」の対策として、黒本をもとに各章ごとの重要そうなポイントをピックアップしまとめたものの後編です。前半の記事はこちらです。
##7章 クラスの継承、インターフェース、抽象クラス
インターフェイス
フィールド:定数のみ持つことができる。(自動的にpublic static finalがつく)
メソッド:publicな抽象メソッドやdefaultメソッド、staticメソッドを持つことができる。
<defaultメソッド>
Java8 SEかより、defaultメソッドを利用することでインターフェイスにメソッドの実装ができるようになった。
default 戻り値型 メソッド名 (引数の型 引数名){
// 処理内容を記述
}
#####※defaultメソッドの注意点
-
インターフェイスを実装したクラスからdefaultメソッドを呼び出す。
→ インターフェイス名.super.メソッド名() -
defaultメソッドの注意点として、オーバーライドする際にjava.lang.Objectに定義されているメソッドをデフォルトメソッドとしてオーバーライドすると、コンパイルエラーが起こるので注意!
→ equals()、clone()、toStrign()メソッドなど -
defaultメソッドは、直接実装したクラスからしか呼び出すことができない。(階層を跨ぐことができない)
###ポリモーフィズムしたインスタンスを呼び出しについて
-
フィールドを参照した場合、変数の方で宣言された方を使う
-
メソッドを呼び出した場合、メソッド内の指示に従う
###コンストラクタ
- サブクラスのコンストラクタには、スーパークラスのコンストラクタを呼び出すsuper()が自動的に追加される。
##8章 関数系インターフェース、ラムダ式
###ラムダ式
ラムダ式とは、メソッドを変数と同様に扱うことができる文法です。
関数インターフェイス型 変数名 = (引数1,引数2,・・・) ->{return 処理};
// 引数の型は記述しなくてもよい。
関数インターフェイス型 変数名 = 引数 -> {return 処理};
// 引数が一つしかない場合は()を省略することができる。
関数インターフェイス型 変数名 = (引数) -> 処理;
// 実行する処理が一つしかない場合は{}を省略することができる。
// また、{}を省略した場合、returnも省略する。(記載できない)
#####※ラムダ式の注意点
- ラムダ式では、ローカル変数と同じ変数名のフィールドを持つことができない。
- ラムダ式内からローカル変数にアクセスする場合、ローカル変数がfinalな変数でなくてはいけない。
###主要な関数系インターフェイス
- Consumer
- Supplier
- Predicate
- Function
- <>(ジェネリクス型)のパラメータを受け取ることが可能なのは4つのうちFunctionのみ
##9章 API
##10章 例外処理
-
finallyが記述されている場合、例外がスローされなくてもfinally文が実行される。
-
例外処理の記述順はtry->catch->finallyでなくてはいけない
-
クラスがキャストできない場合、その例外を示すClassCastExceptionがスローされる.
-
catch()文にreturnがあっても先にfinallyを処理した後に戻される.
##11章 モジュールシステム