학습 로그/Python3

D+36+[Python] 오버로딩,오버라이딩

goodjob^^ 2026. 6. 2. 18:56

ㅇ 일  자 :  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("야옹~ 야옹~"); // 자식 입맛에 맞게 재정의
    }
}

끝.