この章ではクラスの継承について説明します。
クラスの継承とは元々あるクラスを拡張して、新しいクラスを作成することを言います。新しいクラスを作成するのに元のクラスと変数やメソッドが重なった場合, 元のクラスの機能を使える仕組みが継承です。
つまり、新しいクラスをゼロから作成するのではなく、元のクラスの機能を借りて新しいクラスを作成する仕組みが継承です。
元のクラスを親クラス(スーパークラスとも言います)、その親クラスを受け継いだクラスを子クラス(サブクラスとも言います)と言います。 では少し長いですが例をみてみましょう。 では説明を始めていきます。
この例では親クラスのBankクラスを受け継いだShoukenクラスを作成しています。
その子クラスの中には親クラスにはない子クラス独自のメソッドや変数を書きます。
なぜなら、子クラスは親クラスのメソッドや変数を全て使うことができるので、あえて親クラスのメソッドや変数を書く必要が無いからです。
ではどこで親クラスの変数を取得しているかと言いますとです。
superとは親クラスを意味します。
子クラスの中でsuperはinitializeメソッドの中にありますが、この場合にはsuperは親クラスのinitializeメソッドを呼ぶことを意味します。
子クラスのメソッドの中でsuperを使うとそのメソッド名と同名のメソッドを親クラスから呼び出すことができます。
この例では子クラスのinitializeメソッドの中でsuperを使っているので親クラスのinitializeメソッドを呼び出すことができます。 super(name,age,money)の箇所は以下の作業をしています。
オブジェクトの引数が親クラスのinitializeメソッドの中のインスタンス変数に代入されます。 そして、initializeメソッドの引数aは@company1に代入されます。 その他にもこの例では以下のように子クラスのresultメソッドからsuperを使って、親クラスのresultメソッドを呼び出しています。 実はこのresultメソッドは親クラスにも子クラスにもありますが、このように子クラスの中で親クラスと同じ名前で中身だけが違うメソッドを作ることが出来ます。
これをオーバーライドと言います。
先ほども書きましたが、superの機能を詳しく言いますと子クラスの中のオーバーライドしているメソッドの中にsuperを記述すると親クラスの中の同名のメソッドを呼び出すことができます。
例えば上の例では子クラスのresultメソッドから親クラスのresultメソッドを呼び出しています。
では次の箇所の説明をします。 複数の箇所でを使っていますが、「+」は文字列同士を連結する機能がありますので、オブジェクトが数値の場合にはを使用して、文字列に変換してください。 結果は以下の通りです。
カテゴリー