IT/JAVA

자바 - 메소드 재정의 (오버라이딩 @Override)

트레비라임 2020. 11. 20.

메소드 재정의(@Override) 개념

메소드 오버라이딩은 상속된 메소드의 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의하는 것을 말한다. 

메소드가 오버라이딩되었다면 부모 객체의 메소드는 숨겨지기 때문에, 자식 객체에서 메소드를 호출하면 오버라이딩된 자식 메소드가 호출된다.

※메소드를 오버라이딩할 때 주의할 점

  • 부모의 메소드동일한 시그너처(리턴 타입, 메소드 이름, 매개 변수 리스트)를 가져야 한다.
  • 접근 제한을 더 강하게 오버라이딩할 수 없다.(부모메서드가 public 접근제한을 가지고 있을 경우 오버라이딩하는 자식 메소드는 default나 private 접근 제한으로 수정할 수 없다는 뜻이다.)
  • 새로운 예외(Exception)를 throws 할 수 없다.

마우스 우클릭 ->soure ->Override/Implement methods 클릭

@Override 애노테이션(Annotation)

재정의된 메서드라는 의미로 선언부가 기존의 메서드와 다른 경우 에러발생

애노테이션은 컴파일러에게 특정한 정보를 제공해주는 역할

주로 사용되는 자바에서 제공되는 애노테이션

 

final클래스와 final 메소드

  • final 키워드는 해당 선언이 최종 상태이고, 결코 수정될 수 없음을 뜻한다.
  • final클래스는 상속할 수 없다.
  • final메소드는 오버라이딩할 수 없다.

 

 

 

오버로딩과 오버라이딩의 차이

오버로딩(Overloading) : 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술

오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 상요한다.

 

구분 오버로딩 오버라이딩
메소드 이름 동일 동일
매개변수 다름 동일
리턴타입 상관없음 동일

 

'IT > JAVA' 카테고리의 다른 글

자바 - 추상클래스,템플릿 메서드  (0) 2020.11.22
자바 - 다형성(Polymorphism)  (0) 2020.11.20
자바 - 상속(Inheritance)  (0) 2020.11.16
자바 - ArrayList  (0) 2020.11.15
자바 - 배열(Array)  (0) 2020.11.14

댓글