Allen's 데이터 맛집

[Python] 기초문법 : 상속과 오버로딩, 오버라이딩 본문

Programming/Python

[Python] 기초문법 : 상속과 오버로딩, 오버라이딩

Allen93 2023. 11. 21. 01:49

상속과 다중 상속은 객체 지향 프로그래밍에서 중요한 개념입니다. 파이썬은 다중 상속을 지원하며, 여러 개의 클래스로부터 상속받을 수 있습니다. 

 


 

 


1. 상속(Inheritance): 상속은 한 클래스가 다른 클래스의 속성과 메소드를 물려받는 것을 의미합니다.

# 부모 클래스 정의
class Animal:
    def speak(self):
        print("동물이 소리를 낸다.")

# 자식 클래스 정의
class Dog(Animal):
    def bark(self):
        print("멍멍!")

# 인스턴스 생성 및 메소드 호출
dog = Dog()
dog.speak()  # 출력 결과: 동물이 소리를 낸다.
dog.bark()  # 출력 결과: 멍멍!

이 예제에서 Dog 클래스는 Animal 클래스를 상속받았기 때문에 speak 메소드를 사용할 수 있습니다.

 

 


2. 다중 상속(Multiple Inheritance): 다중 상속은 하나의 클래스가 두 개 이상의 클래스로부터 상속받는 것을 의미합니다.

# 부모 클래스들 정의
class A:
    def method_a(self):
        print("메소드 A 실행")

class B:
    def method_b(self):
        print("메소드 B 실행")

# 자식 클래스 정의
class C(A, B):
    def method_c(self):
        print("메소드 C 실행")

# 인스턴스 생성 및 메소드 호출
instance_c = C()
instance_c.method_a()  # 출력 결과: 메소드 A 실행
instance_c.method_b()  # 출력 결과: 메소드 B 실행
instance_c.method_c()  # 출력 결과: 메소드 C 실행

이 예제에서 C 클래스는 A 클래스와 B 클래스를 모두 상속받았기 때문에 method_a와 method_b를 사용할 수 있습니다. 그리고 C 클래스는 자체적으로 정의된 method_c를 사용할 수 있습니다.

상속과 다중 상속을 적절히 사용하면 코드의 재사용성을 높일 수 있습니다. 그러나 오버사용은 코드를 복잡하게 만들 수 있으므로 주의해야 합니다.

 



3. 오버라이딩(Overriding): 오버라이딩은 상속 관계에서 기존의 메소드를 자식 클래스에서 재정의하는 것을 의미합니다.

# 부모 클래스 정의
class Animal:
    def speak(self):
        print("동물이 소리를 낸다.")

# 자식 클래스 정의
class Dog(Animal):
    def speak(self):
        print("멍멍!")

# 또 다른 자식 클래스 정의
class Cat(Animal):
    def speak(self):
        print("야옹!")

# 인스턴스 생성 및 메소드 호출
animal = Animal()
animal.speak()  # 출력 결과: 동물이 소리를 낸다.

dog = Dog()
dog.speak()  # 출력 결과: 멍멍!

cat = Cat()
cat.speak()  # 출력 결과: 야옹!

이 예제에서 Animal 클래스를 상속받은 Dog 클래스와 Cat 클래스는 각각 speak 메소드를 오버라이딩하여 자신만의 구체적인 기능을 가지도록 재정의하였습니다. 이것은 파이썬에서 오버라이딩이 가능하다는 것을 보여줍니다.

728x90