継承(Inheritance)は、オブジェクト指向プログラミングの基本概念の一つで、既存のクラス(親クラスまたは基底クラス)の属性やメソッドを、新しいクラス(子クラスまたは派生クラス)に引き継ぐ仕組みです。継承を使うことで、コードの再利用性を高め、クラス間の関係を明確にすることができます。
基本概念
- 親クラス(Parent Class): 基本となるクラスで、他のクラスに属性やメソッドを提供します。別名として基底クラスやスーパークラスとも呼ばれます。
- 子クラス(Child Class): 親クラスから属性やメソッドを継承するクラスです。別名として派生クラスやサブクラスとも呼ばれます。
- super(): 子クラスで親クラスのメソッドを呼び出すために使用します。
継承の種類
- 単一継承(Single Inheritance): 子クラスが一つの親クラスからのみ継承する。
- 多重継承(Multiple Inheritance): 子クラスが複数の親クラスから継承する。
各科目の説明と例
1. 単一継承(Single Inheritance)
単一の親クラスから継承する例です。
例:
class Animal: def __init__(self, name): self.name = name def speak(self): raise NotImplementedError("Subclass must implement abstract method") class Dog(Animal): def speak(self): return f"{self.name} says woof!" dog = Dog("Buddy") print(dog.speak()) # 出力: Buddy says woof!
2. 多重継承(Multiple Inheritance)
複数の親クラスから継承する例です。
例:
class Flyer: def fly(self): return "Flying high!" class Swimmer: def swim(self): return "Swimming in the sea!" class Duck(Flyer, Swimmer): def quack(self): return "Quack quack!" duck = Duck() print(duck.fly()) # 出力: Flying high! print(duck.swim()) # 出力: Swimming in the sea! print(duck.quack()) # 出力: Quack quack!
3. super()
を使った親クラスのメソッド呼び出し
子クラスで親クラスのメソッドを呼び出すためにsuper()
を使用する例です。
例:
class Person: def __init__(self, name, age): self.name = name self.age = age def introduce(self): return f"My name is {self.name} and I am {self.age} years old." class Student(Person): def __init__(self, name, age, student_id): super().__init__(name, age) self.student_id = student_id def introduce(self): base_introduction = super().introduce() return f"{base_introduction} My student ID is {self.student_id}." student = Student("Alice", 20, "S12345") print(student.introduce()) # 出力: My name is Alice and I am 20 years old. My student ID is S12345.
継承の利点
- コードの再利用性: 親クラスで定義されたメソッドや属性を子クラスで再利用できるため、コードの重複を減らせます。
- 階層構造の明確化: クラス間の関係性を明確にすることで、コードの構造が理解しやすくなります。
- ポリモーフィズム(多態性): 親クラス型の変数に子クラスのオブジェクトを代入できるため、柔軟なプログラム設計が可能です。
参考文献
- W3Schools – Python Inheritance
- Real Python – Inheritance and Composition
- Python.org Documentation – Inheritance
これらの例と参考文献を通じて、Pythonの継承の基本的な使い方とその応用方法を学ぶことができます。継承を適切に利用することで、プログラムの設計がより効率的かつ柔軟になります。