일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Provider
- 자바
- Dependency
- disposableeffect
- 파이썬문법
- ContentProvider
- composelifecycle
- android
- Python
- 오블완
- 자바set
- Kotlin
- 백준
- 파이썬
- compose
- jetpack
- 문자열
- nullpointerexception방지
- filternotnull()
- list
- 백준파이썬
- Java
- 프로그래머스
- 배열
- 자바리스트정렬
- Hilt
- programmers
- 자료형
- 티스토리챌린지
- 리스트
- Today
- Total
study gomi
[Python|파이썬] 기본 문법 - 메소드 오버라이딩 (+파이썬의 메소드 오버로딩?!) 본문
예제 코드 출처 : Chat GPT
메소드 오버라이딩(Overriding)
- 서브클래스(자식 클래스)가 슈퍼클래스(부모 클래스)로부터 상속받은 메소드를 재정의하는 것
- 이를 통해 상속받은 메소드와 동일한 이름을 가진 새로운 메소드를 생성.
- 서브클래스에 맞게 기능을 변경할 수 있다.
- 메소드 오버라이딩은 상속받은 기능을 서브클래스의 필요에 맞게 변경할 수 있도록 해주어 객체 지향 프로그래밍에서 매우 유용한 기능이다.
- 자식 클래스에서 같은 메소드를 새로 정의하면 자식 클래스의 메소드 사용 (그렇지 않으면 부모 클래스의 것 사용)
class Animal:
def speak(self):
print("이 동물은 소리를 낼 수 있습니다.")
class Dog(Animal):
def speak(self):
print("멍멍!")
class Cat(Animal):
def speak(self):
print("야옹!")
# 객체 생성
animal = Animal()
dog = Dog()
cat = Cat()
# 메소드 호출
animal.speak() # 출력: 이 동물은 소리를 낼 수 있습니다.
dog.speak() # 출력: 멍멍!
cat.speak() # 출력: 야옹!
메소드 오버로딩(Overloading) : 오버로딩과 유사한 기능을 구현할 수 있지만, 전통적인 오버로딩은 지원하지 않는다.
- Python에서는 동일한 이름의 함수나 메소드를 여러 번 정의할 수 없기 때문에 정식 지원 x.
- C++이나 다른 언어에서 볼 수 있는 전통적인 형태로는 존재하지 않음.
- 대신 기본 매개변수 값, 가변 매개변수 목록 등을 통해 유사하게 구현할 수는 있음.
- 함수가 여러 개의 매개변수를 받을 수 있도록 하거나, 하나의 매개변수가 여러 타입의 값을 받을 수 있게 하는 방법 사용.
# greet 함수는 두 번째 매개변수인 msg에 기본값을 제공
def greet(name, msg="안녕하세요!"):
print(f"{name}, {msg}")
# 함수를 호출할 때 두 번째 매개변수를 생략할 수 있음.
# 일종의 오버로딩과 유사한 효과를 제공
greet("철수")
greet("영희", "반가워요!")
# sum_numbers 함수가 임의의 개수의 인자를 받을 수 있게 작성.
#
def sum_numbers(*args):
return sum(args)
# 다양한 개수의 매개변수를 처리할 수 있게 됨.
# 오버로딩과 유사한 효과를 낼 수 있음.
print(sum_numbers(10, 20))
print(sum_numbers(10, 20, 30))
* 참고 : c++에서의 오버로딩 (본인이 익숙한 게 c++이라 c++로 설명)
C++에서 메소드 오버로딩은
- 동일한 이름을 가진 메소드를 여러 개 정의하지만,
- 각각의 메소드가 서로 다른 매개변수의 타입이나 개수를 가질 수 있게 하는 것.
- 즉 메소드 명만 같고 매개변수가 다름.
'basic > python' 카테고리의 다른 글
[Python|파이썬] 기본 문법 - 모듈 (1) | 2024.01.12 |
---|---|
[Python|파이썬] 기본 문법 - 오류, 예외 처리 (0) | 2024.01.11 |
[Python|파이썬] 기본 문법 - 상속 (1) | 2024.01.08 |
[Python|파이썬] 기본 문법 - 클래스 기본 (0) | 2024.01.06 |
[Python|파이썬] 기본 문법 - 파일 입출력 (2) | 2024.01.04 |