부모 클래스와 자식 클래스는 객체 지향 프로그래밍의 중요한 개념입니다. 이러한 개념은 코드의 재사용성과 유지보수성을 높일 수 있습니다. 부모 클래스는 공통된 속성과 메서드를 가지며, 자식 클래스는 부모 클래스를 상속받아 고유한 속성과 메서드를 추가할 수 있습니다.
클래스 정의하기
class 부모클래스:
# 부모 클래스의 속성과 메서드 정의
class 자식클래스(부모클래스):
# 자식 클래스의 속성과 메서드 정의
상속(inheritance)
자식 클래스는 부모 클래스의 속성과 메서드를 상속받습니다. 상속을 통해 부모 클래스의 기능을 그대로 사용하거나, 필요에 따라 수정하여 사용할 수 있습니다. 이를 통해 코드의 중복을 피하고 코드를 보다 재사용 가능하고 효율적으로 만들 수 있습니다.
예제 코드
class Animal:
def __init__(self, name):
self.name = name
def sleep(self):
print(f"{self.name} is sleeping.")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
def bark(self):
print(f"{self.name} is barking.")
def sleep(self):
super().sleep()
print(f"But {self.name} is snoring loudly.")
# 부모 클래스의 인스턴스 생성
animal = Animal("Generic Animal")
animal.sleep()
# 자식 클래스의 인스턴스 생성
dog = Dog("Max", "Golden Retriever")
dog.bark()
dog.sleep()
위 예제에서는 Animal
이라는 부모 클래스를 정의하고, Dog
라는 자식 클래스를 정의합니다. Dog
클래스는 Animal
클래스를 상속받아 name
속성과 sleep
메서드를 사용할 수 있습니다. 또한, Dog
클래스에는 고유한 breed
속성과 bark
메서드가 추가되어 있습니다.
부모 클래스와 자식 클래스는 동일한 메서드 이름을 가질 수 있습니다. 이때 자식 클래스에서 메서드를 재정의(override)하면 부모 클래스의 메서드 대신 자식 클래스의 메서드가 호출됩니다. 위 예제에서는 Dog
클래스의 sleep
메서드가 부모 클래스의 sleep
메서드를 호출한 뒤 추가적인 동작을 수행합니다.
자식 클래스는 부모 클래스의 속성과 메서드 외에도 고유한 속성과 메서드를 추가할 수 있습니다. 이를 통해 클래스 간의 계층 구조를 직관적으로 표현할 수 있고, 코드의 가독성과 유지보수성을 높일 수 있습니다.
부모 클래스와 자식 클래스를 적절히 활용하여 객체 지향 프로그래밍의 장점을 최대한 활용해보세요!