[파이썬] 클래스 상속과 하위 클래스

클래스 상속은 객체 지향 프로그래밍에서 중요한 개념입니다. 이를 통해 기존 클래스에서 새로운 클래스를 만들어 기존 클래스의 속성과 메소드를 상속받을 수 있습니다. 이를 통해 코드 중복을 피하고 재사용성을 높일 수 있습니다.

기본적인 클래스 상속

Python에서는 클래스 상속을 정의할 때, 기존 클래스의 이름을 새로운 클래스의 괄호 안에 입력하여 상속받을 수 있습니다. 아래는 간단한 예시입니다.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_info(self):
        return f"이름: {self.name}, 나이: {self.age}"

class Employee(Person):
    def __init__(self, name, age, salary):
        super().__init__(name, age)
        self.salary = salary

    def get_info(self):
        return f"이름: {self.name}, 나이: {self.age}, 급여: {self.salary}"

위의 예시에서 Person 클래스는 nameage를 속성으로 가지고 있으며, get_info 메소드를 포함하고 있습니다. Employee 클래스는 Person 클래스를 상속받아 nameage 속성을 상속받은 후에 salary 속성을 추가하였습니다. 또한, get_info 메소드를 오버라이딩하여 직원의 정보와 급여도 함께 반환하도록 변경하였습니다.

새로운 객체를 생성하고 메소드를 호출해 보겠습니다.

person = Person("홍길동", 30)
print(person.get_info())  # 출력: 이름: 홍길동, 나이: 30

employee = Employee("이순신", 40, 5000)
print(employee.get_info())  # 출력: 이름: 이순신, 나이: 40, 급여: 5000

위의 예시에서 Employee 클래스는 Person 클래스를 상속받았기 때문에 nameage 속성을 사용할 수 있으며, get_info 메소드도 사용할 수 있습니다. super() 함수를 사용하면 부모 클래스의 메소드를 호출할 수 있습니다.

다중 상속

Python에서는 여러 클래스로부터 상속을 받을 수도 있습니다. 이를 다중 상속이라고 합니다. 아래는 다중 상속의 예시입니다.

class Car:
    def __init__(self, model):
        self.model = model

    def drive(self):
        print(f"{self.model} 자동차가 주행합니다.")

class Bike:
    def __init__(self, model):
        self.model = model

    def ride(self):
        print(f"{self.model} 자전거를 탑니다.")

class Motorcycle(Car, Bike):
    def __init__(self, model):
        super().__init__(model)

motorcycle = Motorcycle("슈퍼바이크")
motorcycle.drive()  # 출력: 슈퍼바이크 자동차가 주행합니다.
motorcycle.ride()  # 출력: 슈퍼바이크 자전거를 탑니다.

위의 예시에서 Car 클래스와 Bike 클래스를 상속받은 Motorcycle 클래스를 정의하였습니다. Motorcycle 클래스는 drive 메소드와 ride 메소드를 모두 사용할 수 있습니다.

클래스 상속과 하위 클래스는 객체 지향 프로그래밍의 강력한 기능입니다. 이를 통해 코드의 재사용성을 늘리고, 코드 구조를 체계적으로 구성할 수 있습니다.