(TIL) 20220328, @Override

2022. 3. 29. 03:01TIL(Today I learned)

반응형

🏴󠁩󠁤󠁪󠁷󠁿Facts(한 것)


  • 백준 알고리즘 풀기
  • 코어 자바9 읽기
  • 네트워크 과제 하기
  • 오전 운동

 

🏴󠁩󠁤󠁪󠁷󠁿Findings(배운 것)


<가장 빨리 만나는 코어 자바 9> 를 읽는데, 생성자 오버로딩 개념이 나왔다.

갑자기 Spring에서 사용하는 @Override는 어떨 때 쓰는건지 자세히 알아보고 싶어서 공식문서를 찾아봤다. (둘은 아무 관련 없다.)

 

스프링 공식문서에 나오는 Method Override는 아래와 같이 정의되어 있다.

" representing the override of a method on a managed object by the IoC container."
메서드를 재정의하는 어노테이션인 것이다. 
그럼 그냥 재정의하면 되지 왜 어노테이션이 필요할까?
아래의 코드를 확인해보자.
 
public class Helloworld {
	public void printHello() {
    	System.out.println("Hello world!");
    }
    
}

 

그리고 이 클래스에 있는 printHello라는 메서드를 오버로딩한다고 하자.

 

public class Main extends Helloworld {
	
    @Overide
    public void pringHelloWorld() {
    	System.out.println("Not Hello");
    }
 }

 

이렇게 Main 클래스에서 Helloworld 클래스를 상속받아 메서드를 재정의했다.

 

그런데 이렇게 재정의를 시도하면 컴파일러가 에러를 발생시킨다. 왜 그럴까?

 

바로 메서드 이름이 다르기 때문이다. 

 

Helloworld 클래스에 있는 method는 printHello 인데, Main 클래스에 있는 메서드는 printHelloWorld이다.

 

이렇게 잘못된, 즉 상속하는 클래스에 없는 메서드를 만드려고 시도를 하면 컴파일러가 에러를 발생시켜 잘못됨을 알려준다.

 

결론적으로 사람의 실수를 막아주는 효과가 있다고 할 수 있다.

 

Override에 대해 추가적으로 알고 싶다면 https://docs.oracle.com/javase/specs/jls/se11/html/jls-9.html#jls-9.6.4.4

 

Chapter 9. Interfaces

If a single field is inherited multiple times from the same interface because, for example, both this interface and one of this interface's direct superinterfaces extend the interface that declares the field, then only a single member results. This situati

docs.oracle.com

 

 

 

🏴󠁩󠁤󠁪󠁷󠁿Feeling(느낀 점)


오전 운동을 호기롭게 시전했고, 갔다와서 공부도 열심히 했지만

 

잠을 많이 못 잔 탓에 피곤함을 이기지 못하고 1시간 넘게 잤다. (오히려 좋아)

 

덕분에 저녁 늦게까지 과제하고 공부를 더 할 수 있었다.

 

 

🏴󠁩󠁤󠁪󠁷󠁿Affirmation(자기선언)


  • 매일 알고리즘 문제 1문제 이상 풀기 => 성공
  • 수업 공부한 것은 일주일 내에 포스팅하기 => 내일 OSI 7계층 중 어플리케이션 계층에 대한 자세한 포스팅
  • 자바 8버전에 익숙해지기 => 성공

 

🏴󠁩󠁤󠁪󠁷󠁿여담


 
반응형

'TIL(Today I learned)' 카테고리의 다른 글

(TIL) 20220331  (0) 2022.04.01
(TIL) 20220329, Persistent/ Non-Persistant HTTP  (0) 2022.03.30
(TIL) 20220326, 라인 코테 후기, agile process  (0) 2022.03.27
(TIL) 20220325  (0) 2022.03.27
(TIL) 20220324  (0) 2022.03.25