# 오버 로딩
오버로딩은 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것을 말합니다.
오버로딩을 사용하면 같은 이름의 메서드를 다양한 매개변수 형식이나 개수로 정의할 수 있습니다.
매개변수의 타입, 개수, 순서 등이 다르면 컴파일러는 각각의 오버로딩된 메서드를 구별하고 호출할 수 있게 됩니다.
* 오버로딩의 핵심 아이디어는 동일한 이름의 메서드를 사용하여 비슷한 작업을 다루는 다양한 시나리오를 처리하는 것이다.
오버로딩은 코드의 가독성과 재사용성을 높일 수 있지만,
파이썬은 자체적으로 메서드 오버로딩을 지원하지 않기 때문에 기본값 설정, 가변 인자, 키워드 인자 등을
활용하여 비슷하게 사용할 수 있다.
예시)
from multipledispatch import dispatch
class Shape:
@dispatch()
def area(self):
pass
@dispatch(int, int)
def area(self, length, width):
return length * width
@dispatch(float)
def area(self, radius):
return 3.14 * radius * radius
shape = Shape()
result1 = shape.area()
print(result1)
result2 = shape.area(5, 6)
print(result2)
result3 = shape.area(4.5)
print(result3)
파이썬은 공식적으로 지원하지는 않기 때문에 multipledispatch 패키지를 설치하고 이를 나타낼 수 있다.
# 오버 라이딩
오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 말합니다.
자식 클래스는 부모 클래스로부터 상속받은 메서드를 동일한 이름으로 다시 구현하여
부모 클래스의 동작을 변경하거나 확장할 수 있습니다.
* 오버라이딩을 통해 자식 클래스는 부모 클래스의 메서드를 자신에게 맞게 재정의할 수 있다.
이를 통해 다형성을 구현하고, 객체의 타입에 따라 동일한 메서드를 호출했을 때 각 객체의 구체적인 동작이 수행된다.
예시)
class Animal:
def make_sound(self):
print("Animal makes a sound")
class Cat(Animal):
def make_sound(self):
print("Cat meows")
class Dog(Animal):
def make_sound(self):
print("Dog barks")
요약)
오버라이드는 상속 받은걸 새로운 내용으로 덮어씌우는 것
오버로딩은 상속이랑은 상관없고 같은 클래스 내의 같은 이름의 메서드를 호출할 때 매개변수등을 통해 다르게 호출해서 원하는 메서드를 불러 내는것
'Python > python' 카테고리의 다른 글
url에 쿼리스트링으로 데이터 넘길때 예약문자 인코딩문제 (0) | 2023.10.25 |
---|---|
검색하다가 모르던거 정리 (0) | 2023.07.11 |
파이썬이 코드를 메모리에 로드하는 때 (0) | 2023.06.19 |