Home /Java/ Override 와 Overload
Post
Cancel

/Java/ Override 와 Overload



Override와 Overload


Override와 Overload는 메소드(기능)의 재정의 또는 확장을 위한 개념입니다.



📌 Override


  • Override는 부모 클래스의 상속을 받은 자식 클래스에서 확장하는 개념



오버라이딩을 사용하는 이유


  • 상속받은 메소드를 그대로 사용할 수도 있지만,
    자식 클래스에서 상황에 맞게 변경해야하는 경우 오버라이딩할 필요가 생김



@Override


  • 부모 클래스의 메소드를 오버라이딩하는 것은
    내용만을 새로 정의하는 것이므로
    선언부는 부모의 것과 완벽히 동일해야 함
  • @Override라는 어노테이션은 오버라이딩을 검증하는 기능, 코드상으로 검사했을 때 오버라이딩이 실제로 시행되지 않았다면 컴파일시 오류를 출력



오버라이딩의 조건과 특징


상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술이다.
만약 자식클래스가 부모클래스에서 선언된 것과 같은 메소드를 가질 때, 메소드 오버라이딩이라고 한다.

  • 오버라이드 하고자 하는 메소드가 상위 클래스에 존재해야 한다.
  • 메소드 이름이 같아야 한다.
  • 메소드 파라미터 개수, 파라미터의 자료형이 같아야 한다.
  • 메소드 리턴형이 같아야 한다.
  • 상위 메소드와 동일하거나 내용이 추가되어야 한다.



오버라이딩에서의 접근 제어자를 설정하는 규칙


  1. 자식 클래스에서 오버라이딩하는 메소드의 접근 제어자는 부모 클래스보다 더 좁게 설정할 수 없다.
  2. 예외(Exception)는 부모 클래스의 메소드 보다 많이 선언할 수 없다.
  3. static메소드를 인스턴스의 메소드로 또는 그 반대로 바꿀 수 없다.



📌 Overload


  • Overload는 같은 클래스 내부에서 확장하는 개념
  • 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도
    매개변수의 개수 또는 타입이 다르면,
    같은 이름을 사용해서 메소드를 정의할 수 있음



오버로딩의 조건


오버로딩은 같은 메소드라도 매개변수만 다르면 얼마든지 정의하고 사용할 수 있다.

  • 메소드 이름이 같아야 한다.
  • 리턴형이 같아도 되고 달라도 된다.
  • 파라미터 개수가 달라야 한다 .
  • 파라미터 개수가 같을 경우, 데이터타입이 달라야 한다.
  • 리턴타입은 시그니처에 포함되지 않기 때문에 주의. 컴파일 에러 발생.



오버로딩의 특징


  • 메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 함
  • ‘리턴 값만’ 다른 것은 오버로딩을 할 수 없음
  • 접근 제어자도 자유롭게 지정해 줄 수 있음
  • 오버로딩은 매개변수의 차이로만으로도 구현가능,
    매개변수가 다르다면 리턴 값은 다르게 지정할 수 있음



오버로딩을 사용하는 이유


  • 같은 기능을 하는 메소드를 하나의 이름으로 사용할 수 있음
  • 메소드의 이름을 절약할 수 있음



Override와 Overload 비교


구분OverridingOverloading
접근 제어자부모 클래스의 메소드의 접근 제어자보다
더 넓은 범위의 접근제어자를
자식클래스의 메소드에서 설정 가능
모든 접근제어자 사용가능
리턴형동일해야함달라도됨
메소드명동일해야함동일해야함
매개변수동일해야함달라야함
적용범위상속관계에서 적용같은 클래스 내에서 적용됨




(참고)



공부한 내용을 여러글과 책 읽은 내용을 바탕으로 정리하고 있습니다.
좋은 글로 저의 공부에 도움을 주시는 분들께 감사드립니다.

This post is licensed under CC BY 4.0 by the author.