みなさんこんにちは!新人のかのんです!
長いような短いような、早くも7月の2週目も終わろうとしています。
だというのに外は雨…夏はどこ?気も重くなりますね。
週末は復習をしつつ趣味のゲームでリフレッシュしたいと思っています。
それでは本日は木、金の研修内容をお伝えしていこうと思います!
研修
継承
継承とは・・・
親のクラス(スーパーメソッド)の内容を子のクラス(サブクラス)に受け継ぐこと。
継承されたサブクラスは、わざわざ書かなくてもスーパークラスの内容も使うことができちゃいます!
書き方は以下のような感じ。
1 2 3 4 5 6 7 |
//スーパークラス class Super{ } //サブクラス class Sub extends Super{ } |
継承元になるスーパークラスはいつも通り
class クラス名(スーパークラス名)
サブクラスは
class サブクラス名 extends スーパークラス名
で書くことができます!
サブクラス独自の機能を追加することもできます。
(例えばキャラクタークラス(スーパークラス)に「たたかう」メソッド、「にげる」メソッドがあるとします。
サブクラスの魔法使いメソッドには「まほう」メソッド、戦士メソッドには「必殺技」など、そのクラスしかもっていない処理を付け足すことができます!)
オーバーライド
スーパーメソッドで宣言されているメソッドと同じ名前のメソッドをサブで作り、サブ側の処理を行うようにします。
イメージ的には上から同じ大きさのものを被せると上に被せたものしか見えなくなると思います、そんな感じです。
(この時被せているだけなので、元の処理はちゃんと残っています!)
抽象クラス
あえて中身を書かないことによって、ほかのクラスの中でオーバーライドしていないと「中身がないよ!」というエラーが出ます。(オーバーライド漏れ防止)
書き方は以下。
1 2 3 4 5 6 7 8 9 |
abstract class Super{ public abstract void print(); } class Sub extends Super{ public void print(){ System.out.println("抽象化"); } } |
抽象化してあげたいクラスとメソッド名に“abstract”をつけてあげます。
スーパークラスでは抽象メソッドを書いた後に普通にいつも通り処理を書くことができます。
インターフェース
こちらも抽象クラスと同じようにオーバーライドさせないとエラーが出ます。
1 2 3 4 |
interface インターフェース名{ public static final 型 定数名 = 値; public abstract 戻り値 メソッド名(引数リスト); } |
一つ目または二つ目の書き方ができます。
一つ目は定数(=数値が変わらないもの)なので定数名は大文字にしてあげる必要があります。
一つ目のpublic static finalと二つ目のpublic abstractは勝手に入るので省略が可能です。
所感
オブジェクト指向がわかったおかげで課題が大分すらすらと解けるようになりました。
逆に言えばオブジェクト指向が分かるまでは、その先の内容をやっても大元の部分がよく分かっていないせいでちんぷんかんぷんでした。
まだ引数や戻り値がいったりきたりすると混乱はしますが、数をこなせばなんとか解けそうで安心しています。
最後に
毎回ブログの内容どんな感じにしようかな~と考えながら書いているのですが、なかなかこれ!といったレイアウトや書き方に定まらないのが悩みです。センスが欲しいです。
それでは、かのんでした!