継承とインタフェースで紹介したインタフェースは
部分的にメソッドを実装したものを継承させるといったことができない。
そこで、部分的な実装をサブクラスに共有させる方法として抽象クラス(abstractクラス)というものが存在する。
ただし、抽象メソッドに関してはサブクラスで実装しなければならず、サブクラスは抽象クラスを継承(extends)する
必要がある。javaは多重継承をサポートしていないので、必然的にサブクラスは1つの抽象クラスのみを継承することになる。
abstract class AbstractClassA {
//抽象メソッドでないメソッド
void function() {
//何らかの実装をする。ここで実装したものはサブクラスに引き継がれる。
}
//抽象メソッド。サブクラスでの実装を必要とする。
abstract void function2();
}
class SubClassA extends AbstractClassA {
//抽象クラスで実装していなかった抽象メソッドをサブクラスで実装する。
void function2() {
}
}
継承とインタフェースと抽象メソッドを取り上げたが、違いをまとめると以下の通りとなる。
|
通常の継承(extends) |
インタフェース(implements) |
抽象メソッド(abstract) |
変数の継承 |
できる |
final public staticが自動で付与される。(定数の共有) |
できる |
関数の共有[スーパークラスで全ての関数が実装された関数の共有] |
できる |
できない |
できる |
関数の共有[スーパークラスの一部の関数のみ実装された関数の共有] |
できない |
できない |
できる |
複数クラスの継承 |
できない |
できる |
できない |
最終更新:2011年05月07日 19:05