抽象クラスについて vol.49

前回の続きで今回は、抽象クラスの使い方について紹介していこうと思う。

1.抽象クラスの問題

抽象クラスは抽象メソッドを含むクラスであるので、3つ問題がある。

紹介していこう。

・オーバーライドのし忘れ
・何もしないと区別される
・未完成のまま意図しないnewをしてしまう可能性

この三つがあげられる。

実際にどのような感じかというと、

画像1

このように空のメソッドがあるクラスが抽象クラスだ。

画像2

変わらず継承を行った。赤い波線が出でいるのは継承元のオーバーライドをしてくれという合図だ。

画像3

これをこのままMainクラスで呼び出すとどうなるのか。

エラーにはならないが、空の抽象メソッドを呼び出すと何も実行されない。

これが問題なのだ。

ではこのもの問題を解決する方法を紹介を使用。

2.抽象クラスの問題解決

親クラスの修飾子の後と、抽象メソッドの修飾子の後abstractを付けるのみ。

画像4

このように書くだけだ。
{}が;に変わるのでそこだけ気を付ける。

画像5

子クラスでは、赤い波線に触れ実装されていないメソッドを追加で自動的にabstractを付けたメソッドのオーバーライドが用意される。

画像6

このようになる。

これに処理を記述するだけで、問題解決だ。

abstractを付けることで、newしようとするとエラーが起こる。

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
型 Iphone は継承された抽象メソッド CellPhone.call() を実装する必要があります
 at Extends.Iphone.call(Iphone.java:3)
at Extends.Main.main(Main.java:9)

このようにエラーが出るので、意図しないnewやオーバーライドのし忘れ、を無くし実行のないと区別されなくなる。

今回は以上

では、また次回
元体育会系文系エンジニア石黒

この記事が気に入ったらサポートをしてみませんか?