새소식

반응형
Programming Language/Python

[Python] 파이썬 상속의 개념

  • -
반응형

상속(Inheritance)은 객체 지향 프로그래밍(OOP)에서 중요한 개념 중 하나로 하나의 클래스가 다른 클래스의 속성과 메서드를 상속받은 것을 의미한다. 상속을 통해 코드 재사용성을 높이고 클래스 간의 계층 구조를 만들 수 있다. 이를 이해하기 위해 상속의 개념과 예시 코드를 자세히 살펴보자.
 

1. 상속의 개념


• 기본 클래스(부모 클래스 또는 슈퍼 클래스) 
상속을 제공하는 클래스를 말한다. 이 클래스는 다른 클래스에게 속성과 메서드를 제공한다.
 
• 파생 클래스(자식 클래스 또는 서브 클래스) 
상속을 받는 클래스를 말한다. 이 클래스는 기본 클래스의 속성과 메서드를 상속받아 사용하거나 확장할 수 있다.
 

2. 상속의 장점


• 코드 재사용성 
  기본 클래스에서 정의한 속성과 메서드를 파생 클래스에서 다시 정의하지 않고 사용할 수 있다.
• 계층 구조
  클래스 간의 계층 구조를 구성하여 코드를 조직화하고 추상화할 수 있다.
• 확장성
  파생 클래스에서 새로운 속성과 메서드를 추가하여 기능을 확장할 수 있다.
 

예제로 동물을 나타내는 Animal 클래스와 그를 상속받는 Dog 클래스를 만들어 보자.

 

예제 코드

class Animal:
    def __init__(self, name, species):
        self.name = name
        self.species = species

    def make_sound(self, sound):
        print(f"{self.name} makes a {sound} sound")

class Dog(Animal):
    def __init__(self, name, breed):
        # 부모 클래스의 생성자 호출
        super().__init__(name, species="Dog")
        self.breed = breed

    # 부모 클래스의 메서드 확장
    def make_sound(self, sound="bark"):
        print(f"{self.name} barks: {sound}")

    def wag_tail(self):
        print(f"{self.name} wags its tail")

# Dog 클래스의 인스턴스 생성
my_dog = Dog("Buddy", "Golden Retriever")

# 상속받은 속성 및 메서드 사용
print(f"{my_dog.name} is a {my_dog.species}")
my_dog.make_sound()  # 출력: Buddy barks: bark
my_dog.wag_tail()     # 출력: Buddy wags its tail

• Animal 클래스는 name과 species 속성을 가지며 make_sound 메서드를 정의한다.
• Dog 클래스는 Animal 클래스를 상속받아 breed 속성을 추가하고 make_sound 메서드를
  확장하여 더 구체적인 동작을 정의한다. 이것이 바로 메서드 오버라이딩(Overriding)이다.
• super() 함수를 사용하여 부모 클래스의 생성자를 호출하고 부모 클래스의 속성을 초기화한다.
• my_dog 인스턴스는 Dog 클래스의 객체이므로 Animal 클래스의 속성과 메서드를 상속받고
  Dog 클래스의 속성과 메서드를 사용할 수 있다.

이러한 상속을 통해 코드를 재사용하고 클래스 간의 계층 구조를 만들 수 있으며 필요한 경우
메서드를 확장하거나 오버라이딩하여 기능을 커스터마이즈 할 수 있다.

 

 

읽어주셔서 감사합니다.
 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.