Previous | Next | Trail Map | Writing Java Programs | オブジェクト指向のプログラミング概念(入門書)


継承とは何か?

一般的に、オブジェクトはクラスによって定義される。 クラスを知ることによって、オブジ ェクトについて多くを知ることができる。 たとえペニーファージングが何であるか知らないとしても 、それが自転車であると聞けば、2つの車輪とハンドルとペダルを持つことがわかる。

### オブジェクト指向のシステムではこれをさらに発展させて、クラスを他のクラスから定義できるようになっている。 例えば、マウンテンバイク、レース用自転車、二人乗り自転車は異なる 種類の自転車である。 オブジェクト指向の技術用語では、マウンテンバイク、レース用自転車、二人乗り自転車はすべて自転車クラスのサブクラスと言う。 同様に、自転車クラスはマウンテンバイク、レ ース用自転車、二人乗り自転車のスーパークラスと言う。

それぞれのサブクラスがスーパークラスから(変数宣言のかたちで)状態を継承する。 マウンテン バイク、レーシング自転車、二人乗り自転車は、ペダルをこぐ速度や、スピードのような状態を共有する。 同じく、それぞれのサブクラスはスーパークラスからメソッドを継承する。 マウンテンバイク 、レーシング自転車、二人乗り自転車は、ブレーキをかけたり、スピードを換えたりする振る舞いを共有する。

しかし、サブクラスはスーパークラスが持つ状態と振る舞いに限定されない。 (そのポイントは何であろうか?) サブクラスは、スーパークラスから継承したものに変数とメソッドを追加することが できる。 二人乗り自転車には、2つのシートと2つのハンドルがついている。一方マウンテンバイクには、ギアの歯車比を軽減する特別のギアがついている。

サブクラスは継承したメソッドをオーバーライドして、これらのメソッドの実装を特殊化することもできる。 例えば、特別なギア付きのマウンテンバイクを持っていた場合、「ギア変更」メ ソッドをオーバーライドすれば、実際に新しいギアを使用することができる。

継承の1階層に制限されない。継承ツリーやクラス階層と言われ、必要なだけ深くすることができる。 メソッドと変数は階層レベルの終わりまで継承される。 階層が深くなるほど、振る舞いはより特殊になる 。

継承の利益


Previous | Next | Trail Map | Writing Java Programs | 目次