抽象クラス
抽象クラスとは、このクラスを継承した子クラスは、このフィールドやメソッドを持っているということを保証するためのクラスという意味になる。
なぜ抽象クラスが存在するかというと、1つのクラスのプログラムが大きくなってくると、「このクラスで何ができるのか」がわかりにくくなってきてしまいます。
そうしたとき、抽象クラスを見れば「このフィールドや、このメソッドは持っている」ということがすくにわかるメリットがあります。
作り方はクラスの頭に「abstract」をつければいいだけ。子クラスで必ず書き換えて使うメソッドにも、頭に「abstract」をつけて「抽象メソッド」として指定します。
抽象クラスを作り、プログラム全体を抽象クラスに変更してみよう
以前より作っている「計算問題を1つだけ作るクラス」CalcQuizクラスを元に、抽象クラスのQuizを作ってみましょう。クラスの頭に「abstract」をつけて、問題を作る「createQuestion()」メソッドは、それぞれの子クラスで中身を書くので「abstract void createQuestion();」とだけ指定します。
Quiz.java
abstract class Quiz { | abstractで抽象クラスを作ります。 |
String question; String answer; | 問題と答えを保存するフィールドを作ります。 |
abstract void createQuestion(); | 問題を作るメソッドは必ず書き換えが必要になります。 |
String getQuestion(){ return this.question; } String getAnswer(){ return this.answer; } } | 問題を返す、答え返す |
各、子クラスのextendsの後ろを「Quiz」に書き換えて、Quizクラスを継承するように変更します。
MushikuiQuiz.java
MistakeQuiz.java
TanukiQuiz.java
最後に、Main.javaの配列のデータ型をQuizに変更すれば、抽象クラスを使った書き方に変更完成です。
一応、うまく実装できているか確認してみます。
変わらず実装できていることがわかります。
Java1年生 体験してわかる!会話でまなべる!プログラミングのしくみ / 森巧尚 【本】
この本から引用、参考にして学びました。この本ではキャラクターが対話しながら進み、あきることなく図解などを多用して初心者が始めるにはとても分かりやすい本です。
身に付け消えないスキルが約2,000円ならコスパよく、買っておいてよかったと満足してます。
短期間でのレベルアップにはプロから学ぶのもありです。
就職・転職支援
ぺージの先頭に戻る(Return to top of page)
©2020年9月 Challenge programming