hanker

JAVA - JAVA에서 메서드 오버로딩과 오버라이딩의 차이점은 무엇일까? 본문

JAVA

JAVA - JAVA에서 메서드 오버로딩과 오버라이딩의 차이점은 무엇일까?

hanker 2024. 11. 27. 00:04
반응형

메서드 오버로딩과 오버라이딩
메서드 오버로딩(Method Overloading)과 메서드 오버라이딩(Method Overriding)은 둘 다 자바에서 메서드를 재정의하는 방식이지만, 사용 목적과 방식이 다르다.
 
자세하게 알아보자
 

1. 메서드 오버로딩 (Method Overloading)

 

정의 
같은 이름을 가진 메서드를 여러 개 정의하는 것으로, 매개변수의 타입, 개수, 순서가 다르게 하여 구분한다.
 
 
특징
- 같은 클래스 내에서 사용
- 메서드 이름은 같지만, 매개변수 목록이 다르다.
- 반환 타입은 오버로딩의 기준이 되지 않는다. 즉, 반환 타입만 다르고 매개변수가 동일한 경우 오버로딩이 성립하지 않는다.
 
 
사용목적
오버라이딩과 같은 기능을 하지만, 다양한 매개변수를 받을 수 있도록 하여 코드의 가독성과 유지보수성을 높인다.
 
 
예제

public class OverloadingExample {

    public void print() {
        System.out.println("매개변수 없음");
    }

    public void print(String name) {
        System.out.println("이름: " + name);
    }

    public void print(int number) {
        System.out.println("숫자: " + number);
    }

    public void print(String name, int number) {
        System.out.println("이름과 숫자: " + name + ", " + number);
    }

    public static void main(String[] args) {
        OverloadingExample example = new OverloadingExample();
        example.print();
        example.print("hanker");
        example.print(10);
        example.print("hanker", 20);
    }
}

 
 
 

2. 메서드 오버라이딩(Method Overriding)

 

정의
부모 클래스에서 상속받은 메서드를 자식 클래스에서 재정의하는 것이다.
 
 
특징
- 상속 관계에서 사용된다.
- 부모 클래스의 메서드와 메서드 이름, 매개변수 목록, 반환 타입이 모두 동일해야 한다.
- 오버라이딩을 통해 부모 클래스의 메서드를 재정의함으로써 자식 클래스에 맞는 기능을 구현할 수 있다.
- @Override 어노테이션을 사용하여 오버라이딩된 메서드임을 명시적으로 표시한다.
 
 
사용목적
상속받은 메서드를 자식 클래스에서 다르게 동작하도록 변경하고자 할 때 사용한다.
 
 
예제

class Rangking {
    void getRanking() {
        System.out.println("당신의 순위는 ? ");
    }
}

class Name extends Rangking {
    void getRanking() {
        System.out.println("1위");
    }
}

public class OverridingExample {
    public static void main(String[] args) {
        Name myRanking = new Name();
        myRanking.getRanking();
    }
}

* 상속받은 메서드를 자식 클래스에서 다르게 동작하도록 변경
 

정리
특징오버로딩(Overloading)오버라이딩(Overriding)
목적같은 이름의 메서드를 다양한 방식으로 사용상속받은 메서드의 동작을 변경
클래스 관계같은 클래스 내부모-자식 클래스 간
메서드 시그니처메서드 이름 동일, 매개변수 목록 다름메서드 이름, 매개변수, 반환 타입 모두 동일
어노테이션 사용필요 없음일반적으로 @Override 사용

 
 

오버로딩은 주로 편리한 사용을 위해 같은 메서드 이름을 여러 방식으로 정의하는 것이고,
오버라이딩은 상속을 통해 다형성을 구현하고 기존 동작을 수정하는 데 사용한다.

반응형