前回の記事ではインターフェースについて述べた。
https://qiita.com/QiitaD/items/835ed6ee4e52cb6b214a
今回は、インターフェースとしばしば比較される「抽象クラス」について記す。
抽象クラスとは
抽象メソッドを一つ以上持つクラスのことである。抽象メソッドはサブクラスで必ず実装しなければならないので、開発者にオーバーライドを強制することができる。
扱い方
抽象クラスを扱ううえで以下のようなルールがある。
1. インスタンス化できない
2. 抽象メソッドをオーバーライドしなければならない
3. サブクラスでコンストラクタの記述が必要である。
インターフェースとの相違点
以下が相違点を表にしたものである。
抽象クラス | インターフェース | |
---|---|---|
実装を持つメソッド | 実装可 | 実装不可 |
メンバ変数 | クラスのメンバ変数 | 定数 |
多重継承 | 不可 | 可 |
実装
以下のように実装できる
//抽象クラスViecleの実装
abstract class Viecle {
//抽象メソッド
}
またサブクラスは抽象クラスを継承することで実装できる。
//抽象クラスViecleの実装
abstract class Car extends Vielce {
//スーパークラスのコンストラクタ呼び出し
//抽象メソッドのオーバーライド
}