티스토리 뷰
Done
- 미션 및 수업 복습 비공개
- cherry-pick 처음 성공!
- 미션 수행 및 관련 궁금했던 부분 학습
Learned
1. 접근제어자
(1-1) 왜공부?
분명 자바의 정석에서 공부했지만 실제 코드를 짤 때 적용하지 못했다.
적용하지 못한 가장 큰 부분은 생성자의 파라미터로 받아 값을 할당해주는 final 필드에 대해서
class A{ private final String a; public A(String a){ this. a = a; }
했을 때 private을 빠트렸다.
(1-2) 학습내용
자바의 정석은 복습해보았지만 기존지식에서 추가되는 점이 없어 혹시 놓치고 있는 것이 있나 해서 생활코딩 접근제어자 파트를 들었다.
- 새롭게 알게 된 내용(or 학습했지만 기억에서 삭제된..)
- 접근제어자 5 : 클래스의 접근 제어자
- public과 default만을 갖고 있다
- default는 같은 패키지 내에서만 사용 가능
- 다른 패키지에서 (import하고도) 사용하려고 하면 불가능
- 단, public은 제약 사항이 있다.public class의 이름은 해당 파일 명과 반드시 동일해야 함
== 하나의소스코드 안에는 하나의 public class만 존재 가능
- 접근제어자 5 : 클래스의 접근 제어자
- 새롭게 알게 된 내용(or 학습했지만 기억에서 삭제된..)
여러 자료를 찾다가 알게된, 메소드(final String a)의 의미
final
- 메소드에 파라미터로 final 변수를 전달하면?
- 메소드 내에서 변수 재할당 될 수 없다.
- https://stackoverflow.com/questions/2236599/final-keyword-in-method-parameters
- 메소드에서 final - ex.final void b() {}
- 클래스 a의 메소드 a-를 final을 붙이면 다른 클래스 b가 a를 상속받는다 할 때 메소드 -a를 오버라이딩 하지 못한다.
- 클래스에서 fianl class C {} : 상속 금지
- 다른 클래스 D extends C 불가
abstract
- 멤버 중에 하나라도 abastract이면 해당 클래스는 abstract이다
- 구체적인 로직을 가진 메서드가 가질 수 있다. (구현부있는)
- 메소드에 파라미터로 final 변수를 전달하면?
2. enum
(2-1) 왜 공부?
- 생성자에 파라미터를 넘겨 받을 때, 해당 파라미터가 특정 값을 가질 때만 유효한 경우를 만들고 싶었다.
- https://stackoverflow.com/questions/30803650/java-how-to-only-create-an-object-with-valid-attributes 의 방법을 찾았지만, 해당 경우는 두 파라미터의 크기 비교가 조건이었다.
- 내가 원하는 것은 문자열로 전달받는 파라미터가 특정 값들 중 하나일 때 ( 리스트 안에 포함되어 있을 때로 처음 고려했으나 enum을 쓴 코드스쿼드 동료 분을 보고 공부하게 되었다)공부내용
(2-2) 학습내용
- 출처 : 생활코딩 - enum (동영상 4개 시청 완료) https://bong-f.tistory.com/174
- enum은 사용목적이 분명한 '클래스'다.
- 위와 아래의 의미가 같다. 그래서 APPLE() 이런 의미는 Fruit 객체를 생성한다는 말과 같다.
- 그렇기 때문에 APPLE("red")해준다면 생성자로 String을받아 어떤 작업을 해준다는 말과 같다. 자세한 내용 https://bong-f.tistory.com/174
- enum의 효과
- 상수를 배열처럼 활용 가능하다. for(Fruit f ; Fruit.values()) 처럼 배열에서 꺼내 오는 것으로 사용 가능
- 코드가 간결해진다
- 인스턴스의 생성과 상속을 방지할 수 있다
- 목적(열거를 위한 코드)을 코드만 봐도 알 수 있다.
(2-3) 더 학습할 내용
- 우아한형제들 enum 정리한 글 꼼꼼히 읽기(#todo)
(2-4) 좋았던 블로그 (210212 추가)
https://velog.io/@kyle/%EC%9E%90%EB%B0%94-Enum-%EA%B8%B0%EB%B3%B8-%EB%B0%8F-%ED%99%9C%EC%9A%A9 enum에 대해서 정리를 잘해두셨다.
enum == 관련이 있는 상수들의 집합
클래스 내에서 상수를 선언하거나 인터페이스로 관리하면 네이밍이 겹치거나 / 다른 분류의 상수 값이더라도 같은 데이터 타입이라면 이 둘을 비교하는 것이 가능한 문제점 (생활코딩 enum 강의에서 배웠던 내용)을 해결 하기 위해 enum 등장 // 나는 이렇게 이해하고 있었는데 위 블로그에서는
기존에는 인터페이스나 클래스 내에서 상수를 선언함으로써 상수를 관리 하였는데 클래스 내에서 선언하는 부분은 네이밍이 겹칠 수 있고 불 필요하게 상수가 많아지는 단점이 있다.
인터페이스로 관리하는 경우 이런 부분은 줄어들지만 여전히 IDE의 지원을 적극적으로 받을 수 없고 타입 안정성이 떨어지는 단점을 가지고 있었다. 이를 보완하며 나온 것이 Enum이다.이렇게 깔끔하게 정리하셨다.
3. 기타
- Junit에서 예외처리 assertThatIllegalArgumentException
Good
- 게임 한 시간 보충 및 연휴에 다른 일정을 위한 시간을 위해 늦게까지 공부함
Bad
- 게임을 조금 했다.
Feeling
- 공부하면서 천천히 하나하나 배워가면서 공부하는 방식을 택하고 있는데 과연 맞는 것인지,, 한 번 쭉 훑고 아니면 코드를 작성하면서 죽쭉 나가야 하는 것인지 고민이 된다.
'기타 > TIL' 카테고리의 다른 글
210213 토 TIL (0) | 2021.02.13 |
---|---|
210212 금 TIL (0) | 2021.02.12 |
210209 화 TIL (0) | 2021.02.09 |
210208 월 TIL (0) | 2021.02.08 |
210206 - 07 토일 TIL (1) | 2021.02.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- thread
- 순열조합
- Gitignore
- 예외
- arraylist
- 힙
- array
- 우선순위큐
- 프로그래머스lev2
- 프로그래머스lev1
- 그래프이론
- 동빈북
- SQL코딩테스트
- 백준
- Stream
- Stack
- 프로그래머스lev3
- 최단경로
- Sort
- spring-boot-qna
- Queue
- FLASK
- 프로그래멋lev2
- JdbcTemplate
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함