yeonuel-tech
파이썬에서는 오버로딩과 오버 라이딩이 적용될까? 본문
파이썬은 동적 언어이다. 즉, 컴파일이 없고 인터프리터가 존재하는 언어이다.
해당 언어의 가장 큰 장점은 유연함이다. 런타임 시점에 타입을 변경하거나 메서드를 추가하는 작업을 할 수 있다.
오버로딩이란? "같은 이름의 메서드를 여러개 정의하는 것"
오버로딩의 조건으로는 크게 3가지가 있다.
- (1) 메서드 이름이 같아야함
- (2) 매개변수의 개수 및 타입이 달라야함
- (3) 반환 타입이 같아야함
오버라이딩이란? "조상에서의 메서드를 자손에서 재정의하는 것"
오버라이딩의 조건으로는 크게 3가지가 있다.
- (1) 메서드의 선언부가 일치해야함
- (2) 자손에서 조상 보다 접근 제한자가 좁으면 안됨
- (3) 자손에서 조상보다 더 큰 범위의 예외를 선언할 수 없음
본론으로 들어가서 오버로딩은 가능할까? 불가능하다.
생각을 해보면, 파이썬의 객체는 맵과 같은 구조이다. 즉, 멤버들이 모두 맵에 등록된다.
따라서, 오버로딩을 할 경우에 같은 이름으로 여러개의 함수 로직을 등록할 수 없기 때문에 오버로딩이 불가능하다.
오버라이딩은 가능할까? 가능하다.
파이썬에서는 메서드를 찾을 때 상속 계층도를 이용하여 찾아간다.
즉, 부모 객체의 영역과 자식 객체의 영역이 분류되어 서로 연결되어 있다. 따라서 같은 이름의 함수를 서로 다른 영역에
등록하는 것이기 때문에 가능하다.
이를 그림으로 그려보면 다음과 같다
'programing-languages > Python' 카테고리의 다른 글
파이썬스러운 객체 스스로 만들어보는 과정 (0) | 2024.09.01 |
---|---|
순서가 유지되는 맵은 어떻게 구현될까??에 대한 나의 생각 (0) | 2024.07.25 |