본문 바로가기
Backend/Java

[JAVA]오버로딩(overloading)과 오버라이딩(overriding)

by kkaboo 2024. 1. 5.
728x90

오버로딩(overloading)과 오버라이딩(overriding)

 

💡오버로딩(overloading) 

• 하나의 클래스 내부에서 확장
• 메소드 이름은 동일해야 함
• 매개변수의 개수 또는 타입이 달라야 함
• 리턴 타입은 자유로움
• 매개변수는 같고 리턴 타입이 다르면 성립하지 않음

 

 

💡오버라이딩(overriding)

• 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의
• 메소드의 동작만을 재정의
• 메소드의 이름, 매개변수, 리턴값이 모두 일치해야 함
• 접근 제어자를 더 좁은 범위로 변경할 수 없음

 

 

💡오버로딩(overloading)과 오버라이딩(overriding)의 차이점

오버로딩(overloading)은 새로운 메소드의 정의하는 것이고, 오버라이딩(overriding)은 상속받은 기존의 메소드를 재정의하는 것이다. 

아래의 예제를 보면 알기 쉽다.

// 부모 class
class 복숭아 {

    void aboutPeach() { 
        System.out.println("복숭아는 맛있다."); 
    }

}

// 복숭아 class를 상속받은 물복 class
class 물복 extends 복숭아 {

    // 복숭아 class로부터 상속받은 aboutPeach() 메소드 오버라이딩(재정의)
    void aboutPeach() { 
        System.out.println("나는 물복파다!"); 
    }

    // aboutPeach() 메소드 오버로딩
    void aboutPeach(int price) { 
        System.out.println("물복 가격 : " + price + "원"); 
    }

}


public class Fruit {

    public static void main(String[] args) {
        
        복숭아 peach = new 복숭아();

        물복 softPeach = new 물복();

        peach.aboutPeach();
        
        softPeach.aboutPeach();

        softPeach.aboutPeach(1500);

    }

 

실행결과

복숭아는 맛있다.
나는 물복파다!
물복 가격 1500원

 

 

코드의 마지막 세줄로 정리해 보면 다음과 같다.

오버라이딩(overriding)과 오버로딩(overloading)

 

728x90