LoginSignup
1
0

More than 3 years have passed since last update.

Javaの抽象メソッドと抽象クラス

Posted at

詳細未定のメソッド

例えば、車や自転車のメソッドがあるとします。乗り物はすべて「走行する」機能を持ちます。
プログラム上でも、Vehicleクラス(車両)を継承するすべてのクラスはrunメソッド(走行)を持っていたほうがいいです。
よって本来であれば、runメソッドはVehicleクラスに定義し継承できればいいのですが、乗り物ごとに走行方法が違うため、Vehicleクラスでは処理内容を定めることができません。

抽象メソッド

処理が未定のメソッドを定義する方法は、メソッドの先頭に「abstract」をつけることで、抽象メソッドというメソッドを定義できます。抽象メソッドには中身の処理は書きません。
「abstract」とは「抽象的な」という意味です。具体的な処理が決まっていない未完成のメソッドであるため、「抽象メソッド」と呼ばれます。
抽象メソッドは、サブクラスがそのメソッドをオーバーライド(上書き)していなければエラーになります。
なので、サブクラスがそのメソッドをオーバーライドし、処理内容を定義することを強制できます。
サブクラスに、あるメソッドを必ず持たせたいという場合は、スーパークラスに抽象メソッドとして定義しておきます。

抽象クラス

抽象メソッドを1つでも持つクラスは、「抽象クラス」と呼ばれ、クラス名の前に「abstract」をつけます。
抽象クラスはインスタンスを生成できません。抽象メソッドという未完成のメソッドを持つクラスは、それもまた未完成です。
未完成のクラスからはインスタンスを生成できません。
【例】

abstract class SuperClass {  // 抽象クラスの定義
  abstract public void hello();  // 抽象メソッドの定義
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0