継承
継承とは?
継承とは設計図(クラス)から新たな設計図(クラス)をつくる事です。
また複数のクラスから新たなクラスを作る事を多重継承といいます。
継承する事で元の設計図(クラス)に定義さてれいるもをそのまま流用することができます。
ここでは原子のクラスのほかに原子のクラスを継承した分子のクラス(Molecularクラス)を例にして継承を説明していきます。

継承をする事で分子のクラスは原子のクラスの部品を使う事ができます。

ただし原子のクラスが分子のクラスの部品を使う事はできません。

スーパークラスとサブクラス
継承したクラスの事をスーパークラスと呼びます。
また継承されたクラスの事をサブクラスと呼びます。
原子クラスと分子クラスで考えると
継承したクラスが原子クラスなでの原子クラスがスーパークラスとなります。
そして継承された分子クラスがサブクラスとなります。

継承したクラスをメソッド別に分けると図のようになります。
図からもわかるようにMolecularクラスでMol_weigh()のメソッドを使う事が可能ですが
Atomicクラスでは使う事ができないのがよくわかると思います。
このように新たに追加したい機能だけを設計するが継承の利点であり、オブジェクト指向を特色の一つといえます。

継承のしかた
継承のしかたは図のようにしてください。

継承したメソッドはいままでどおりオブジェクト.メソッド名で使用してください。
ただし特殊メソッドを使う場合は気をつけてください。
例では二つとも特殊メソッドの__init__を使用しています。
__init__は最初に呼び出すメソッドのために分子で使う場合は図のようにして表記しなければなりません。

継承に関する問題
すべて正解できたら次の練習問題の章へ進みましょう。
問題1 次の中でスーパークラスはどれでしょう?

問題2 次の中でサブクラスはどれでしょう?

問題3 次のクラスが継承できているのはどれでしょ?
※aとはb はクラス名とします。