상세 컨텐츠

본문 제목

자바 객체지향 프로그래밍 - 10 [매서드 오버라이딩]

JAVA

by 덴마크 당나귀 2023. 1. 10. 15:11

본문

728x90

오버라이딩

상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음. 즉, 상위 클래스에서 이미 정의된 내용의 메서드를 하위 클래스에서 쓰는게 맞지 않는 다면, 하위 클래스에서 내용을 재정의 할 수 있다.

 

  • 오버로딩은 매서드 이름은 같은데, 매개변수가 다른 경우를 말함 ex) 생성자 오버로딩, 매서드 오버로딩이 있다. 
  • 오버라이딩은 상위클래스의 매서드를 아예 덮어쓴다는 것. 이미 기존에 있던 것에서 새로 쓴다고 생각.

@Override 어노테이션

  • @Override : 재정의된 매서드라는 정보 제공
  • @FunctionalInterface : 함수형 인터페이스라는 정보 제공
  • @Deprecated : 이후 버전에서 사용되지 않을 수 있는 변수, 매서드에 사용됨
  • @SuppressWarnings : 특정 경고가 나타나지 않도록 함 ex) @SuppressWarnings("deprcation")는 @Deprcated가 나타나지 않게 함.

가상메서드

메서드의 이름과 메서드 주소를 가진 가상 메서드 테이블에서 호출될 메서드의 주소를 참조함, 즉, 매서드 자체는 주소값을 의미하는데 하위클래스가 상위 클래스의 매서드를 재정의한다면 새로운 주소값이 생겨서 그 주소로 매서드 호출이 되는 것이고, 그렇지 않다면 상위 클래스가 정의해둔 매서드가 호출이 되는 것. 간단한 것이지만, 하위 클래스에서 매서드를 재정의했을 경우 그 재정의된 매서드가 호출되지만, 재정의하지 않은 매서드의 경우 그러한 매서드 호출시 상위 클래스의 매서드를 호출하게 된다는 뜻

 

728x90

관련글 더보기