TIL

103일차(모험 12일차) 흙 안먹는 delight입니다.

haedal-uni 2021. 12. 25. 00:30
728x90

오전 11시 extends와 implements

Spring 코드 복습을 하다가 implements가 정확히 뭔지 검색을 해봤다.

검색을 하니 거의 글들이 implements와 extends를 비교하는 글이었고 그 둘의 차이를 보게 되었다.

 

 

여기서 이해가 안되는 부분들이 있었고 튜터님께 질문을 드려 정리를 할 수 있게 되었다.

 

 

1. 

extends와 interface가 다른 점은 interface는 한 클래스에 여러 개를 구현하여 사용할 수 있다.

extends는 한 클래스에 하나만 상속받을 수 있다.
또한 extends는 class를 상속받는 것이기 때문에 부모클래스에서 정의한 몇 가지 메소드를 그대로 사용할 수도
override해서 사용할 수도 있다는 점이 있다.
반대로 interface는 정의된 메소드를 implements한 클래스에서 모두 override하여 구현을 해야한다.

에서 첫 줄에 extends와 interface가 다른 점을 비교하는데 

implements 가 아닌 interface로 비교하는 건지 이유를 모르겠다. 

(아래 2번과 같이 해석을 하는게 맞다면)

 

 

 

2.  또 다른 글에서는

1. extends는 일반 클래스와 abstract 클래스 상속에 사용되고, implement는 interface 상속에 사용된다.
2. class가 class를 상속받을 땐 extends를 사용하고, interface가 interface를 상속 받을 땐 extends를 사용한다.

내가 아는 interface는 클래스에서 멤버가 빠진 메소드 모음이라고만 알고 있었고
여기서 설명하는 implements는 재 정의하는 상속으로 설명하고 있는 것 같아서 해석할 때 

extends는 클래스를 확장하는 거고 implements는 인터페이스를 구현하는 것이다 를 예로 들면

상속(부모에 구현되어있는 것을 직접 사용)은 클래스를 확장하는 것이고 
상속(재정의 필요)는 인터페이스를 구현하는 것이다.  와 같이 해석 하는게 맞는 해석일까?

 

 

 

🅰️ :

1번은 extends와 implements를 비교해야 할 것 같다.
2번 부분은 해석하신대로 이해하면 될 것 같다. 이런 부분들은 단번에 이해하려고 하면 어렵다.
해당 케이스들이 나올때마다 의미를 좀 더 파악하려고 노력하면 된다.

 

 

extends와 implements가 다른 점은 implements는 한 클래스에 여러 개를 구현하여 사용할 수 있다.

extends는 한 클래스에 하나만 상속받을 수 있다.
또한 extends는 class를 상속받는 것이기 때문에 부모클래스에서 정의한 몇 가지 메소드를 그대로 사용할 수도
override해서 사용할 수도 있다는 점이 있다.
반대로 interface는 정의된 메소드를 implements한 클래스에서 모두 override하여 구현을 해야한다.

 

→ 이렇게 해석하는게 맞다!

 

 

 

 

[참고했던 링크]

 

자바 extends, implements 차이

[자바] extends와 implements의 차이점

Interface, implements에 대하여

 


오후 2시 Spring 공부

H2를 실행할 때 url에 h2-console 입력해서 실행하는것에 익숙해져서 

h2 데이터베이스 서버를 켜주는걸 깜빡해 실행할 때 왜 에러가 떴는지 몰랐었다.

 

코드를 작성하고 보니 이 전에 작성한 Jdbc에서 Jdbc Template으로 바꿔 놓으니깐

개발해야되는 반복적인 코드가 확 줄어서 편하다는 생각이 들었다.

 

 

103일차(Jdbc Template)

 


오후 5시 흙에서 손 뗌 

어제 test 코드 자체 실행에서 에러가 떴다는걸 새벽에 알게 되서 그냥 바로 잤는데

일어나자마자 바로 test 코드를 작성했고 실행을 시켜가며 이것저것 작성해봤다.

 

단위 테스트 예시로 작성한 코드를 보면서 하다가 통합테스트 예시로 작성한 것을 써봤다.

어노테이션을 입력하고 코드를 작성해서 실행시켰더니 성공으로 떴다. (...??)

 

그래서 튜터님께 여쭤봤다.

통합테스트는 통과되고 단위테스트는 실패로 뜬다면 통합테스트가 운이 좋게 성공으로 뜨는 건지 여쭤봤는데

신기하다는 답변을 받았다. 😅

 

그래서 테스트 코드 전체를 보여주면서

username을 다르게 하면 에러가 뜨고 username이 같으면 통과로써 중복확인 하는 코드가

제가 원하는 의도대로 나오기는 했는데 맞게 한건지 여쭤보았다.

 

의도가 중복된 사용자가 있으면 테스트케이스가 정상인걸로 판단하도록 되어있으니
테스트케이스의 의도로 보면 맞다고 하셨다.

 

혹시 코드 작성이 이상한지 여쭤보았는데

이 테스트 케이스는 중복된 사용자가 저장될 때 에러가 발생하는지 테스트 해보는거라서
이렇게 하면 된다고 하셨다.

 

와웅... 내가 이런걸 작성하다니 놀랍구만...?

테스트 코드 예시보고 내 머리로 작성한 코드가 맞다니 내 자신 칭찬해..😆

 

 

그런데 이 케이스도 단위테스트로 바꿔서 해야하는지 여쭤봤는데

지금 만든게 단위 테스트가 아니냐고 하셔서 이 부분에 대해서는 추가질문을 해야할 것 같다.

 

질문 답변 >> 2021.12.27 - [TIL] - 106일차(모험 15일차)

 


오후 8시 호흡곤란

내일은 크리스마스이기도 하지만 남친 생일이기도 하다.

그래서 케이크도 사고 생일 풍선도 사서 13개의 풍선을 부느라 죽을 것 같았다.

 


오후 9시 늦은 저녁

타임어택 끝나고 다른 팀 사람들과 얘기도 하고 내일 크리스마스라서 크리스마스 얘기도 하고

내일 깜짝 이벤트도 준비해야하고 바빠서 늦은 저녁을 먹었다.

 

오늘은 게더에서 사람들과 얘기하다가 시간을 보낸 것 같다.

 

 

-모험가 haedal

 

728x90