반응형
클래스 상속 (inheritance)
상속은 객체 간의 관계를 구현하는 방법중 하나이다. 간단하게 생각하면은 확장이라고 생각하면된다. 기본적인 기능을 가진 상위 클래스가 존재하고 그 클래스의 하위 클래스가 존재한다고 가정할때, 클래스 상속을 이용하여 상위클래스의 기능을 하위 클래스도 사용가능하다는 것이 상속이다.
상속을 통해 상위 클래스의 맴버를 여러 하위 클래스가 재사용할 수 있어 소스의 재활용에 효과적이고 분업화가 가능하며, 프로그램 유지보수가 간편해져 개발 비용을 절감할 수 있다.
class Animal: # 상위 클래스
def sound(self):
print('소리를 냅니다')
class Dog(Animal): # 하위 클래스
pass
dog = Dog() # Dog클래스의 인스턴스 생성
dog.sound()
""" 결과값
소리를 냅니다.
"""
Dog클래스는 Animal클래스를 상속받기때문에 Animal의 메소드인 sound를 사용할 수 있다.
오버라이딩
메소드 오버라이딩은 부모로부터 상속받은 메소드의 몸통부분을 자식에게 맞게 변형해서 사용하는 것이다.
부모 클래스의 메소드와 자식클래스의 메소드의 선언부가 같으면 동일한 메소드로 인식한다.
다형성
여러개의 자식클래스가 동일한 이름의 메소드를 갖고있으나 각 메소드는 서로 다른 내용을 처리하는 기법이다.
다형성을 구사하기위해서는 상속이 선행되어야하며 메소드 오버라이드를 이용하게 된다.
class Animal:
def sound(self):
print('소리를 냅니다')
class Dog(Animal):
def sound(self):
print('소리를 냅니다 멍멍')
class Cat(Animal):
def sound(self):
print('소리를 냅니다 야옹')
animal = Animal()
animal.sound()
dog =Dog()
dog.sound() # Dog 클래스의 메소드인 sound가 실행이된다.
cat =Cat()
cat.sound() # Cat 클래스의 메소드인 sound가 실행이된다.
animals = [animal, dog, cat]
for i in animals:
i.sound() # list 순차적으로 sound를 실행한다.
"""결과값
소리를 냅니다
소리를 냅니다 멍멍
소리를 냅니다 야옹
소리를 냅니다
소리를 냅니다 멍멍
소리를 냅니다 야옹
"""
객체에서 sound라는 메소드를 찾기위해 먼저 하위클래스에서 찾는다 하위클래스에 존재하지않으면 상위클래스로 넘어가 찾지만 하위클래스에 존재하면 하위클래스의 메소드를 실행하게된다.
728x90
반응형
'Python > 클래스' 카테고리의 다른 글
Python 추상클래스(abstract class) (0) | 2023.09.25 |
---|---|
Python 클래스 변수, 인스턴스 변수 (0) | 2023.09.25 |
Python 생성자, 소멸자, self (0) | 2023.09.21 |
Python 클래스, 객체, 인스턴스 (0) | 2023.09.21 |