抽象メソッドについて整理。
継承について基礎知識が必要。継承については下記に別途整理した。
[Java] 継承とは
継承について、シンプルな例を使って整理。
抽象メソッドとは
まだ処理の内容が何も定義されていないメソッド。
書き方は?
特徴としては、
- 最初にabstractをつける
- 処理内容を定義するための{}を付けない
- abstractクラスと一緒に使う(abstractメソッドを持ってるのに、クラスの宣言部分でabstractがないとエラー)
abstract void exampleMethod();
どうやって使うの?
abstractメソッドを設定することによって、そのabstractメソッドを設定しているクラスを継承している子クラスでは、abstractメソッドを必ず使うように、強制させることができる。
例を使った説明
まずは親クラスで、abstractを設定する。クラスの宣言部分とメソッド部分でそれぞれabstractをつける。
今回は、goSkiingメソッドをabstractに設定。
Skierクラスで、スキーに行く準備をするメソッドを用意。
//Skier.java
public abstract class skier {
void prepare(){
System.out.println("スキーに行く準備をしました。");
}
abstract void goSkiing();
}
次に、abstractのルールで、継承する子クラスには必ずgoSkiingメソッドを入れる必要があるので表記する。
Skierのクラスを継承したSkierAとSkierBはそれぞれ異なるスキー場に行くメソッドを用意。
SkierAは舞子スノーリゾートへ。
//SkierA.java
public class SkierA extends Skier {
//親クラスで設定したabstractメソッドを入れないとエラー
void goSkiing() {
System.out.println("skierAは舞子スノーリゾートに行きました。");
}
}
SkierBはニセコビレッジスキーリゾートへ。
ここでも同じく、Skierクラスを継承しているので、goSkiingメソッドは必ず記述しなければいけない。(オーバーライドしなければならない)
//SkierB.java
public class SkierB extends Skier {
//親クラスで設定したabstractメソッドを入れないとエラー
void goSkiing() {
System.out.println("skierBはニセコビレッジスキーリゾートに行きました。");
}
}
Main.javaでそれぞれインスタンスを作って出力する。
public class Main {
public static void main(String[] args) {
SkierA skierA = new SkierA();
skierA.prepare();
skierA.goSkiing();
SkierB skierB = new SkierB();
skierB.prepare();
skierB.goSkiing();
}
}
//出力結果
スキーに行く準備をしました。
skierAは舞子スノーリゾートに行きました。
スキーに行く準備をしました。
skierBはニセコビレッジスキーリゾートに行きました。

なぜわざわざabstractを使うのか?
Javaは大規模開発を前提にした言語だと考えると、abstractの意義もわかりやすくなる。
例えば何千とある子クラスを作るとき、もし1人の開発者が子クラスでabstractのメソッドの実装を忘れたり、メソッド名のスペルミスを起こせば、コンパイルエラーを起こしてくれる。
また、メソッド名を統一しなければならない=どのクラスでも大体どんな処理をしているのか、把握しやすくなる。
小規模のプログラムだったら、わざわざabstractを使って縛らなくても良いが、大規模開発になり、ルールを厳格にすることで、よりスムーズに開発が進むという意味で、abstractは使える。
全体像を把握する
下記にJavaやwebアプリケーションについての記事をまとめた。
-
-
Javaでwebアプリケーションを作る
ここでは、Javaでのwebアプリケーションの作成についてまとめていく。 そもそもwebアプリケーションとは? そもそもwebアプリケーションとは何か?ウェブサイトとの違いは? 下記にまとめた。 ...
続きを見る
コンピューターについての全体像も把握しておくと、プログラミングのさらなる理解に役立つ。
-
-
Screen-Shot-2021-06-11-at-11.45.16
続きを見る