こんにちは! タコです~
研修も今日で5日!5日ですよ!
ちなみに、僕の好きな数字は5です。
突然ですが、ランニングっていいですね!ランニング。
先日、無性に走りたくなって家を飛び出したんですが
全身に当たる風とか、地面を蹴った感触とか、木々が揺れる音とか、日光とか….とにかく
気持ちいいんですよ。すごく。
その日は丁度桜が満開で、桜の花びらが雨みたいに降ってる景色とか見れちゃうんですよ。
超きれい。
走ってた足を思わず止めちゃいましたね。
ってことで研修の内容に飛び移っていきますね~。
前回はJSPとServletをやってましたが、本日の研修内容のJavaの抽象クラスで躓いたのでそこをちょっと復習します!
抽象クラスは、ただのクラスではなくて、名前の通り抽象的な、ざっくりとした意味を持つクラスで、「不完全なクラス」なんです。こんな不完全なクラスは単体ではつかえず、インスタンス化できません。型としては使えるけど。
ので、基本、継承をして使います!
はい!書き方こんな感じです。一行づつ説明します!
1 2 3 4 5 |
//抽象クラス宣言 abstract class 抽象クラス名{ //抽象メソッド宣言 public abstract 戻り値 メソッド名(引数); } |
1 |
abstract class 抽象クラス名{ |
abstractは英語で抽象という意味です(まんまです…)。これをアクセス修飾子の後につける事で抽象クラスが作れます!
実は抽象クラスでは 普通のメソッドも宣言できます が、抽象クラス限定の、抽象メソッドという特別なメソッドを作ることができます!
普通のメソッドは
1 2 |
public void print(){ } |
こんな風に作りますよね。
抽象メソッドは
1 |
public abstract void print(); |
はい。
これで完成です。クラスと同じでabstractをつけて;で終えればいいんですね。
でもこれ、メソッドの中身がない。処理を書いていないんです。でもこれで完成なんですよね。
「処理書いてないメソッドなんて呼び出さないし、わざわざこうやって宣言する必要もないじゃん」
僕もそう思います。でも、これを宣言することはとっても意味のある事なんです。
先にも述べたとおり、抽象クラスは基本、ほかのクラスの親クラスとして継承させて使います。
実は抽象クラスを継承したクラスは
必ず継承先(親抽象クラス)の抽象メソッドをオーバーライドして、そのオーバーライド先で処理を決めないといけないというルールがあるんです!
そう!抽象クラスのメリット、それは…..そう!
オーバーライドを、忘れないんです。
1 2 3 4 5 |
public class クラス名 extends 抽象クラス名{ //必ずオーバーライド!! public void 抽象メソッド名(){ } } |
extendsで継承します!この、抽象クラスではないクラスを
具象クラス
と呼びます!
最後まで読んでいただきありがとうございます!
最後、まとめです!
・抽象クラスは基本継承して使う!
・抽象クラスは抽象クラスを宣言できる!
・抽象メソッドは具象クラスで必ずオーバーライドする!
今回はここまで!!
それでは、また!