ㅇ 일 자 : 2026년 5월 31(일)
ㅇ 내 용 : class 오버로딩과 오버라이딩 개념 이해하기
1. 오버로딩(Overloading) : 확장, 과적하다, 많이 싣다
오버로딩은 한 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것을 말한다. 컴퓨터가 메서드 이름이 같아도 매개변수의 타입이나 개수를 보고 "아, 이 메서드를 부른 거구나!" 하고 구별할 수 있게 조치를 취해두는 것임
가. 핵심 조건: 메서드 이름은 같아야 하지만, 매개변수의 개수나 타입, 순서가 달라야 한다 (리턴 타입만 다른 것은 인정되지 않음)
나. 우리가 글을 쓸 때 쓰는 '펜(Pen)'을 떠올려 보면 write(검은펜), write(빨간펜), write(형광펜, 굵게)처럼 행동의 이름은 같지만, 쥐어주는 도구(매개변수)에 따라 다르게 작동하는 것과 같다.
class Calculator {
// 1번: 정수 두 개를 더함
int add(int a, int b) {
return a + b;
}
// 2번: 실수 두 개를 더함 (매개변수 타입이 다름)
double add(double a, double b) {
return a + b;
}
// 3번: 정수 세 개를 더함 (매개변수 개수가 다름)
int add(int a, int b, int c) {
return a + b + c;
}
}
2. 오버라이딩(Overriding) : 재정의, 위에 오르다, 덮어쓰다.
오버라이딩은 '부모 클래스로부터 물려받은 메서드를 자식 클래스에서 마음대로 바꾸어 다시 쓰는 것' 부모가 준 기능이 마음에 안 들거나, 자식 클래스에 맞게 업그레이드가 필요할 때 사용한다.
가. 핵심 조건 : 부모 메서드와 이름, 매개변수, 리턴 타입이 완전히 똑같아야 한다. 내용(중괄호 {} 안의 코드)만 변경
나. 부모님께 '가업(메서드)'을 물려받았는데, 자식 대에서 트렌드에 맞게 '인테리어와 메뉴(내부 코드)'를 싹 리모델링해서 운영하는 것, 간판 이름(메서드 이름)은 그대로 유지한다.
예)" 소고기를 속이면 3대가 망한다" 3대째 간판명인데 주인이 대를 이어 환경을 바꿈.
class Animal {
void cry() {
System.out.println("동물이 웁니다.");
}
}
class Cat extends Animal {
@Override // 부모의 cry()를 덮어쓰겠다는 표시 (생략 가능하지만 붙이는 게 좋음)
void cry() {
System.out.println("야옹~ 야옹~"); // 자식 입맛에 맞게 재정의
}
}끝.
'학습 로그 > Python3' 카테고리의 다른 글
| D+41[Python] Resource & 메모장 예제 실습 (0) | 2026.06.05 |
|---|---|
| D+39 [아두이노] Arduino & AI를 응용한 "프로그램 기획서" 작성 예시 (0) | 2026.06.02 |
| D+36 [Layout] .py 파일분리 왜 할까 ? 레이아웃 종합 예제 학습(2) (0) | 2026.05.28 |
| D+35 [Layout] 레이아웃 종합 예제 학습(1) (0) | 2026.05.27 |
| D+32 [Qt for Python] Designer 적용 구조 및 Layout 이해 (0) | 2026.05.21 |