[Java] 오버로딩 & 오버라이딩

lkc9898·2022년 6월 7일

Java

목록 보기
19/25
post-thumbnail

오버로딩(Overloading)

하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것. 보통 하나의 메서드에 하나의 기능을 구현하는데, 같은 이름의 메서드로 여러 기능을 구현하기 때문에 '과적하다'라는 뜻의 "overload"를 사용한다.

코드 예시

public void overloadingEx() {
...
}
public void overloadingEx(String str) {
...
}
public void overloadingEx(String str, int num) {
...
}

오버로딩의 조건은 메서드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다.

오버로딩을 사용하는 이유

  • 같은 기능을 하는 메서드를 하나의 이름으로 사용할 수 있다.

    하나의 메서드로 여러 경우의 수를 해결할 수 있다는 것이다. 예로 흔히 콘솔창에 텍스트를 출력할 때 사용하는 println() 메서드는 인자 값으로 int, String, boolean 등 어떠한 타입의 매개변수들을 넣어도 문제가 없지만 그 내부에는 매개변수 타입에 따라 println 메서드가 달라진다.

오버라이딩(Overriding)

오버라이딩은 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의하는 것을 의미한다. extends를 이용한다.

코드 예시

  • 상위 클래스
class Parent {
    public void ex1() {
        System.out.println("상위클래스");
    }
}
  • 하위 클래스
class Child extends Parent {
    public void ex1() {
        System.out.println("하위클래스");
    }
}
  • 메인 클래스
public class OverridingTest {
    public static void main(String[] args) {
        Parent a = new Parent();
        Child b = new Child();

        a.ex1(); 
        b.ex1(); 
    }
}

오버라이딩시 조건

  • 메서드의 선언부(메서드 이름, 매개변수, 반환타입)가 상위클래스와 완전히 일치해야한다.
  • 접근 제어자의 범위가 상위 클래스의 메서드보다 길거나 넓어야 한다.
  • 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다.

오버로드와 오버라이딩

오버로딩과 오버라이딩은 단어가 유사해 혼동하기 쉽다.

  • 오버로딩(Overloading)은 새로운 메서드를 추가하는 것
  • 오버라이딩(Overriding)은 상속받은 메서드를 재정의하는 것

0개의 댓글