抽象クラスについて vol.49
前回の続きで今回は、抽象クラスの使い方について紹介していこうと思う。
1.抽象クラスの問題
抽象クラスは抽象メソッドを含むクラスであるので、3つ問題がある。
紹介していこう。
・オーバーライドのし忘れ
・何もしないと区別される
・未完成のまま意図しないnewをしてしまう可能性
この三つがあげられる。
実際にどのような感じかというと、
このように空のメソッドがあるクラスが抽象クラスだ。
変わらず継承を行った。赤い波線が出でいるのは継承元のオーバーライドをしてくれという合図だ。
これをこのままMainクラスで呼び出すとどうなるのか。
エラーにはならないが、空の抽象メソッドを呼び出すと何も実行されない。
これが問題なのだ。
ではこのもの問題を解決する方法を紹介を使用。
2.抽象クラスの問題解決
親クラスの修飾子の後と、抽象メソッドの修飾子の後にabstractを付けるのみ。
このように書くだけだ。
{}が;に変わるのでそこだけ気を付ける。
子クラスでは、赤い波線に触れ実装されていないメソッドを追加で自動的にabstractを付けたメソッドのオーバーライドが用意される。
このようになる。
これに処理を記述するだけで、問題解決だ。
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やオーバーライドのし忘れ、を無くし実行のないと区別されなくなる。
今回は以上
では、また次回
元体育会系文系エンジニア石黒