みなさんこんにちは!
新人のかのんです!
本日ついにJavaの研修が終わりました(‘ω’)ノ!
SQLの内容は次回に回すとして、今週やったことを書き残したいと思います!
研修
多態性
クラスをざっくりと扱ってあげることです。
例)田中さんは人間です。人間は哺乳類です。哺乳類は生物です。
アップキャストとダウンキャスト
↓前提↓
1 2 3 4 5 |
class Human{ } class Tanaka extends Human{ } |
人間クラスの変数humanを田中クラスでインスタンス化
1 |
Human human = new Tanaka(); |
↑の時、田中は人間クラス(スーパークラス)のサブクラスなので、アップキャストできる
(暗黙的型変換)
逆に人間は田中であるとは限らないので、
1 |
Tanaka tanaka = (Tanaka)human; |
アップキャストした変数を田中クラスでダウンキャストしてあげる
(明示的型変換)
処理の順番については、
アップキャストが
左辺(サブクラス)の処理をする→右辺の変数に代入
ダウンキャストが
アップキャストで代入された変数を田中クラスに一時的に変換して右辺の変数に代入
という流れになります。
コレクション
List、Set、Mapインターフェースの総称で、
配列と違って上限がない(可変長)
参照型のみ使用可能
よく使われるクラスとして・・・
List → ArrayList
Set → HashSet
Map → HashMap
ArrayList
Listインターフェイスを実装している
配列を可変長にしたもので、添字がある
1 |
ArrayList<要素となる型> 変数名 = new ArrayList<要素となる型>(); |
変数名はよくlistが使われる
注意点
左辺と右辺の要素となる型は同じでないとエラーがでます。
右辺の要素となる型は省略可能で、省略した場合は勝手に左辺と同じものが入っていることになります。
HashSet
Setインターフェイスを実装している
配列を可変長にしたもので、添字がない(順番がない)→ひとつの箱にばらばらに入っている感じ
同じものは入れられない
1 |
HashSet<要素となる型> 変数名 = new HashSet<要素となる型>(); |
変数名はよくsetが使われる
HashMap
Mapインターフェースを実装している
配列を可変長にしたもので、添字がない(順番がない)
添字の型(キー)を指定できる(同じ型は指定できない)
1 |
HashMap<キーとなる型、要素となる型> 変数名 = new HashMap<キーとなる型、要素となる型>(); |
変数名はよくmapが使われる
例外
プログラムの実行中に想定外のエラーがでること。
→普通は例外がでたら処理が中断されてしまうので、例外処理をして例外を処理してあげる
↓種類↓
try-catch、try-catch-catch・・・ tryの中に例外が起こる処理を書いて、catchはその例外が起きた時の処理を書く
try-catch-finaly ↑+finalyには最後にやる処理を書く(catchしなくてもfinalyは発動する)
所感
アップキャストとダウンキャストをどうやって処理するかに頭を悩ませました。
田中は人間だからなんなんだ…????結局処理をするのはどいつだ…???
インスタンス化もただただ教わった形で書いていただけなのですが、よく考えたら処理の仕方は変わらないんですね。
(右辺のクラスの処理をしてから左辺に入れる)
最後に
先日区切れ目でまたテストをやったのですが、
2つめのテストの正答率が10/18、3つ目のテストの正答率が6/20。
ぼろぼろでした。
実際にコンパイルしてエラーをつぶしていくやり方で慣れてしまうと、文字を追って今どうなっているかを考えるのが本当に難しいなと感じました。
以上、かのんでした~!