본문 바로가기

python

python 메서드 오버라이딩과 다형성

오버라이딩(Overriding)

상속에서 쓰이는 개념

부모클래스의 메서드를 자식클래스에서 재정의 하는것

이름이 같은 메서드가 자식클래스에서 사용되면 부모클래스 메서드는 무시된다.

같은 이름의 함수가 있으면 자식의 함수가 우선

python에선 오버로딩 불가능!

오버로딩 코드를 간단하게 예시들어본다.

class Parent:
    def hi(self):
        print("하이")

class Child(Parent):
    def hi(self):
        print("안녕하세요")

if __name__ == "__main__":
    a = Child()
    a.hi() # 안녕하세요가 출력됨

만약 부모 클래스의 hi도 출력하고 싶으면 `super()`를 사용하면 된다.

class Parent:
    def hi(self):
        print("하이")

class Child(Parent):
    def hi(self):
        super().hi()
        print("안녕하세요")

if __name__ == "__main__":
    a = Child()
    a.hi() # "하이" 이후 "안녕하세요"가 출력됨

다형성(Polymorphim)

다형성에 대해 포스팅한 내용이다.

다형성에 대해서

오버라이딩과 다형성의 차이?

해당 글을 쓰기전에 두말의 의미에 대해서 찾아보고 코드도 보았지만, 아무리 봐도

같은 의미로 밖에 생각이 안들었다.

좀 더 찾아보고 나서 이렇게 나눈 의미에 대해서 알게 되었다.

오버라이딩은 상속받은 메서드를 다시 구현하는것 딱 그 자체를 말하는거였고,

다형성은 객체에서 같은이름의 메서드를 호출할때 즉, 오버라이딩된 메서드를 호출할때

서로 다른 행동, 기능, 결과값을 호출하는것을 다형성이라고 한다.

혹여나 위의 내용이 틀린내용이면 답글 남겨 주시면 감사하겠습니다!!