클래스 상속은 객체 지향 프로그래밍에서 중요한 개념입니다. 이를 통해 기존 클래스에서 새로운 클래스를 만들어 기존 클래스의 속성과 메소드를 상속받을 수 있습니다. 이를 통해 코드 중복을 피하고 재사용성을 높일 수 있습니다.
기본적인 클래스 상속
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
클래스는 name
과 age
를 속성으로 가지고 있으며, get_info
메소드를 포함하고 있습니다. Employee
클래스는 Person
클래스를 상속받아 name
과 age
속성을 상속받은 후에 salary
속성을 추가하였습니다. 또한, get_info
메소드를 오버라이딩하여 직원의 정보와 급여도 함께 반환하도록 변경하였습니다.
새로운 객체를 생성하고 메소드를 호출해 보겠습니다.
person = Person("홍길동", 30)
print(person.get_info()) # 출력: 이름: 홍길동, 나이: 30
employee = Employee("이순신", 40, 5000)
print(employee.get_info()) # 출력: 이름: 이순신, 나이: 40, 급여: 5000
위의 예시에서 Employee
클래스는 Person
클래스를 상속받았기 때문에 name
과 age
속성을 사용할 수 있으며, 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
메소드를 모두 사용할 수 있습니다.
클래스 상속과 하위 클래스는 객체 지향 프로그래밍의 강력한 기능입니다. 이를 통해 코드의 재사용성을 늘리고, 코드 구조를 체계적으로 구성할 수 있습니다.