오버라이딩(Overriding)
- 상속에서 쓰이는 개념
- 부모 클래스의 메소드를 자식 클래스에서 재정의 하는 것.
- 이름이 같은 메소드가 자식 클래스에서 사용되면 부모 클래스 메소드는 무시된다.
- 같은 이름의 함수가 있으면 자식의 함수가 우선
- 참고) 파이썬의 경우 오버로딩 불가능
class Parent:
def hi(self):
print("하이")
class Child(Parent):
def hi(self):
print("안녕하세요")
a = Child()
a.hi()
# "안녕하세요"
# 부모 클래스 메서드는 출력하지 않는다.
- super를 사용하면 호출이 가능하다.
class Parent:
def hi(self):
print("하이")
class Child(Parent):
def hi(self):
super().hi()
print("안녕하세요")
a = Child()
a.hi()
# "하이"
# "안녕하세요"
# 부모 클래스 메서드는 출력하지 않는다.
다형성(Polymorphism)
- 같은 모양의 코드가 다른 동작을 하는 것.
- 객체 지향 프로그래밍에서 가장 중요한 개념 중 하나
class Music:
def Ready(self):
print("연주 시작")
class Piano(Music):
def Play(self):
print("피아노 연주 중")
class Drum(Music):
def Play(self):
print("드럼 연주 중")
band = list()
band.append(Piano())
band.append(Drum())
for member in band:
band.Ready()
# 연주 시작
for member in band: # 같은 Play 메서드여도 각각 다르게 출력한다.
member.Play()
# 피아노 연주 중
# 드럼 연주 중
'파이썬 > 3. 객체지향 프로그래밍' 카테고리의 다른 글
파이썬 연산자 오버로딩(operator overloading) (0) | 2020.04.28 |
---|---|
파이썬 클래스 상속, 합성과 통합 (0) | 2020.04.28 |
파이썬 캡슐화와 정보은닉 (0) | 2020.04.28 |
파이썬 클래스, 멤버, 메서드 (0) | 2020.04.28 |
파이썬 객체지향 프로그래밍 (0) | 2020.04.28 |