반응형

정의

메소드 오버라이딩(method overriding) 정의

  • 상위 클래스의 동일한 메소드를 하위 클래스에서 다시 정의(코드를 다시 구현)
  • 메소드 재정의(method refefinition)
  • 또는 매소드 대체(method replacement)라고 표현

 

메소드 오버라이딩의 목적

  • 상위 클래스에서 이미 정의한 메소드를 다시 수정하지 않고
  • 하위 클래스에서 좀 더 보완·수정하거나
  • 완전히 새로운 것으로 대체하기 위한 방법

 

 

조건

- 메소드의 반환 값메소드 이름, 매개변수는 반드시 같아야 함

- 접근 지정자는 하위 클래스의 메소드가 보다 공개적

  • 상위 클래스의 메소드가 public이면, 오버라이딩 되는 메소드는 public에서만 가능
  • 상위 클래스의 메소드가 protected이면, 하위 메소드는 public, protected만 가능
  • 상위 클래스의 메소드가 default이면, 하위 메소드는 public, protected, default만 가능

- 메소드 수정자가 final, private인 메소드는 오버라이딩 불가

 

 

오버라이딩 예제 (1)

 

정보출력() 메소드 생성

 

 

정보출력() 메소드 오버라이딩

 

 

메소드 및 오버라이딩 메소드 동시 호출

 

 

메소드 및 오버라이딩 메소드 실행 결과

 

 

오버라이딩 사용 목적

 

 

오버라이딩 예제 (2)

 

정보출력() 메소드 오버라이딩 추가

 

 

메소드 및 오버라이딩 메소드 동시 호출

 

 

메소드 및 오버라이딩 메소드 실행 결과

 

 

final

클래스 앞의 final

  • 클래스를 더 이상 상속할 수 없음을 의미하는 키워드

 

해당 클래스를 하위 클래스에서 상속 받을 수 없음

 

 

메소드 반환형 앞의 지정자 final

  • 하위 클래스에서 더 이상 메소드 오버라이딩을 허용하지 않음을 의미하는 키워드

 

해당 메소드를 하위 클래스에서 오버라딩 할 수 없음

 

 

동적 바인딩

  • 오바라이딩 메소드 - 가장 하위 객체의 메소드 실행

 

 

메소드 오버로딩

  • 클래스 내부에서 인자가 다르나 이름이 같은 메소드가 여러 개 정의된 경우
  • 반환값은 다를 수 있지만, 인자가 같을 수는 없음

 

메소드 오버로딩 예시 (1)

 

 

메소드 오버로딩 예시 (2)

 

 

메소드 오버로딩 실행 결과

 

 

정적 메소드의 오버로딩

  • 오버로딩의 경우 메소드와 정적 메소드는 무관
  • 정적메소드의 오버로딩은 이름이 같고 매개변수(파라미터)가 다르면 가능
  • 정적 메소드의 경우 클래스 내부에 소속된 변수들에  접근 불가
  • 정적 메소드 내부에서 this, super 사용 불가

 

정적 메소드 오버로딩 예시 (1)

 

 

정적 메소드 오버로딩 예시 (2)

 

 

정적 메소드 실행 결과

 

 

 

반응형

'cs > java-spring-boot' 카테고리의 다른 글

[Zero-base] 3-5. 인터페이스  (0) 2022.01.26
[Zero-base] 3-4. 추상 클래스  (0) 2022.01.26
[Zero-base] 3-2. 다형성  (0) 2022.01.26
[Zero-base] 3주차 과제 (CoordinateCompare.java)  (0) 2022.01.25
[Zero-base] 3-1. 상속  (0) 2022.01.23

+ Recent posts