가이드라인

클래스의 기능을 확장하는 상속

상속(Inheritance)은 객체지향 프로그래밍에서 중요한 개념 중 하나로, 기존 클래스의 기능을 새로운 클래스에서 재사용 및 확장합니다.

상속을 잘 활용하면 코드의 재사용성이 높이고, 체계적으로 유지보수하기 쉬운 코드를 작성할 수 있습니다.


부모 클래스와 자식 클래스

상속에서는 기존 클래스를 부모 클래스(또는 슈퍼 클래스)라고 하고, 이 클래스를 상속받아 새로 만들어지는 클래스를 자식 클래스(또는 서브 클래스)라고 합니다.

자식 클래스는 부모 클래스의 속성과 메서드를 그대로 물려받을 수 있으며, 필요에 따라 새 속성이나 메서드를 추가하거나 기존 메서드를 변경할 수 있습니다.

상속 예시
class Vehicle: def __init__(self, brand, model): self.brand = brand self.model = model def start_engine(self): print(f"{self.brand} {self.model}의 엔진 시동") # Vehicle 클래스를 상속받아 Car 클래스를 만듦 class Car(Vehicle): def __init__(self, brand, model, year): super().__init__(brand, model) # 부모 클래스의 생성자 호출 self.year = year def honk(self): print(f"{self.brand} {self.model}가 경적을 울림") # my_car 객체 생성 my_car = Car("브랜드A", "모델B", 2024) # 출력: 브랜드A 모델B의 엔진 시동 my_car.start_engine() # 출력: 브랜드A 모델B가 경적을 울림 my_car.honk()

여기서 Car 클래스는 Vehicle 클래스를 상속받아 생성됩니다.

Car 클래스는 Vehicle 클래스의 기능을 그대로 사용하면서, 추가로 honk 메서드를 정의합니다.


상속을 왜 사용할까요?

상속을 사용하면 중복된 코드를 줄이고, 공통된 기능을 부모 클래스에 작성한 후, 자식 클래스에서 이를 재사용할 수 있습니다.

예를 들어 다양한 종류의 차량을 나타내는 클래스를 작성할 때, 공통된 기능(예: 엔진 시동)을 부모 클래스에 정의하고 각 차량의 특성에 맞는 기능은 자식 클래스에서 따로 정의할 수 있습니다.


메서드 오버라이딩

자식 클래스에서 부모 클래스의 메서드를 새롭게 정의하는 것을 메서드 오버라이딩(Method Overriding)이라고 합니다.

메서드 오버라이딩을 수행할 경우에는 부모의 메서드와 동일한 이름을 사용하며, self를 포함해야 합니다.

이를 통해 자식 클래스는 부모 클래스의 기능을 자신에게 맞게 재정의할 수 있습니다.

메서드 오버라이딩 예시
class ElectricCar(Car): def start_engine(self): print(f"{self.brand} {self.model}의 전기 모터가 켜짐")

ElectricCar 클래스는 Car 클래스를 상속받았지만, start_engine 메서드를 오버라이딩하여 전기 자동차에 맞게 동작을 변경했습니다.

Mission
0 / 1

클래스의 기능을 확장하는 상속

Animal 클래스의 기능을 상속받은 Dog 클래스의 객체가 동일한 sound 메서드로 '멍멍'을 출력하도록 하려면 어떻게 해야 할까요? 아래 빈칸을 채워 보세요.

class Animal:

    def sound(self):

        print("소리울음")


class Dog(Animal):

    
:

        print("멍멍")


my_dog = Dog()

my_dog.sound()

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행

실행 결과