정보

오버로딩(Overloading)과 오버라이딩(Overriding)

반응형

오버로딩(Overloading)과 오버라이딩(Overriding)



오버로딩

한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도, 매개변수의 개수 또는 타입이 다르면 같은 이름을 사용해서 메서드를 정의할 수 있다.


오버로딩 조건
  • 메서드 이름이 같아야 함

  • 매개변수의 개수 또는 타입이 달라야 한다.

  • 매개변수는 같고, 리턴 타입이 다른 경우에는 오버로딩 성립X


오버로딩 예

  • void println()

  • void println(boolean x)

  • void println(char x)

  • void println(char[] x)



오버라이딩

부모 클래스로부터 상속받은 메서드의 내용을 변경하는 것

상속받은 메서드를 그대로 사용하기도 하지만, 자식 클래스에 맞게 변경해야 하는 경우가 많다. 이럴때 부모 메서드를 오버라이딩 하는 것!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Point { //부모 클래스
    int x;
    int y;
 
    String getLocation() {
        return "x: " + x + ", y: " + y;
    }
}
 
class Point3D extends Point { // 상속받은 자식 클래스
    int z;
 
    String getLocation() {
        return "x: " + x + ", y : " + y + ", z : " + z; //
    }
}
 
cs


오버라이딩 조건

  • 이름이 같아야 한다.

  • 매개변수가 같아야 한다.

  • 리턴 타입이 같아야 한다.


오버로딩 vs 오버라이딩

둘은 혼동하기 쉽지만, 차이는 명백하다.

  • 오버로딩은 기존에 없는 새로운 메서드를 추가하는 것 (NEW)

  • 오버라이딩은 부모로부터 상속받은 메서드의 내용을 변경하는 것 (CHANGE, MODIFY)


반응형