Overloading and Overriding

상훈·2024년 1월 8일
0

Overloading

한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것

Overloading의 조건

  1. 메서드 이름이 같아야 한다.

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

    • 위 조건을 만족시키지 못하는 메서드는 중복 정의로 컴파일 시에 에러 발생

    • ex)

    • void println();
      void println(boolean x);
      void println(char x);
      void println(car[] x);

Overriding

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

Overriding의 조건

  • 자손 클래스에서 오버라이딩하는 매서드는 조상 클래스의 메서드와

    • 이름이 같아야 한다.
    • 매개변수가 같아야 한다.
    • 반환타입이 같아야 한다.
  • 접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경 가능

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

    • 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

    • ex

    • class Parent {
          void parentMethod () throws IOException, SQLException {
              ...
          }
      }
      
      class Child1 {
          void parentMethod() thrwos IOException{
              ...
          }
      }
      
      class child2 {
          void parentMethod() throws Exception{
              ...
          }
      }
    • 위에서 Parent1을 Child1에서 오버라이딩 한 것은 적절하게 됨

    • Parent1을 Child2에서 오버라이딩 한 것은 Exception의 예외 개수가 더 많기 때문에 부적절한 오버라이딩

Overloading vs Overriding

  • Overloading : 기존에 없는 새로운 메서드를 추가하는 것
  • Overriding : 조상으로부터 상속받은 메서드의 내용은 변경하는 것
profile
문송 개발자

0개의 댓글