[OOP] 오버라이딩 (vs. 오버로딩)

오버라이딩

  • 상속받은 조상의 메서드를 자신에 맞게 변경하는 것 (덮어쓰기)

  • 오버라이딩 시, { } 안의 구현부 내용만 변경 가능 하며
    메서드명, 파라미터, 리턴타입은 동일해야 한다.

  • 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

  • 예외는 조상 클래스의 메서드보다 적거나 같아야 한다. (많을 수 없음)

Class Point {
   int x;
   int y;

   String getLocation() {
      return "x: " + x + ", y: " + y;
   }
}

Class Point3D extends Point() {
   int z;

   String getLocation() {    //오버라이딩
      return return "x: " + x + ", y: " + y + ", z: " + z;
   }
}

오버라이딩 vs. 오버로딩

  • 오버라이딩(overriding) : 상속받은 메서드의 내용을 변경 (modify)

  • 오버로딩(overloading) : 이름은 같지만 기존과 다른 메서드를 새롭게 정의 (new)
    (⇒ 상속과는 전혀 관계가 없음!)


  • 아래 코드에서 메서드 구분 :
    • 메서드 오버라이딩
    • 메서드 오버로딩
    • 메서드 정의
    • 메서드 중복정의 → error 발생

좋은 웹페이지 즐겨찾기