오버라이딩
·
JAVA
B 클래스가 A 클래스를 상속받는 관계, 즉 B extends A 에서 B 클래스는 (A 클래스를) 상속받는 클래스, A 클래스는 (B 클래스가) 상속하는 클래스라고 표현한다. 상속받는 자식(서브) 클래스는 상속하는 부모(슈퍼) 클래스의 메서드를 재정의 할 수 있다. 이를 오버라이딩(Overriding)이라고 한다. 이러한 오버라이딩에는 제한 조건이 붙는다. 1. 메소드 이름이 같아야 한다.2. 자식 클래스의 접근 제어자는 부모 클래스 메서드의 접근제어자의 범위와 같거나 넓어야 한다.예시) A 클래스의 exam 메소드 접근 제어자가 protected라면 이를 오버라이딩하는 B 클래스의 exam 메소드는 protected, public만 가능하다. private, defalut는 불가능하다. 3. 반환타입..
Collection framwork의 정렬 메소드 탐구
·
JAVA
1번과 2번의 차이점은 무엇인가? List만을 인자로 받는 1번 sort는 list를 오름차순 정렬하여 이를 반환한다. Comparator를 추가적인 인자로 받는 2번 sort는 정렬기준을 Comparator에 맞춘다. Comparator은 함수형 인터페이스이므로 오름차순과 같은 단순한 정렬기준이 아닌 복잡한 정렬 기준을 사용하고 싶을 때 이를 커스텀하여 정렬 기준을 정의할 수 있다.    🔍  sort(List list)  모르는 개념이 많았다.Comparable이란 무엇이고, List의 요소는 왜 Comparable을 상속한 상태여야할까? sort메소드는 또 뭐지? 지금까지 해당 sort메소드의 인자로 리스트를 넘겨줄 때 따로 Comparable을 이용해서 처리해준 기억은 없는데, 그간 어떻게 돌아..
Optional
·
JAVA
optional이란_ null이 올수 있는 값을 감싸는 Wrapper클래스이다. 옵셔널로 받는 이유는 상황에 따라서 조회를 하면 무조건 리턴되는 데이터가 있는 것이 아니기 때문이다. 리턴된 데이터가 없으면 에러를 내줘야 하는 경우도 있고, 리턴된 데이터가 없으면 임의의 데이터를 추가해주아야 하는 경우도 있다. 따라Optional이 필요한 것이다.  @Service@RequiredArgsConstructor@Transactional(readOnly = true) // no flushpublic class MemberService {private final MemberRepository memberRepository; @Transactional public Long saveMember(Member membe..
abstract class
·
JAVA
A 클래스, B클래스는 공통되는 메서드를 가지고 있다. 즉 공통적인 기능을 가지고 있다. 예를 들어, 각 클래스에 해당 클래스의 인스턴스가 생성되는 시각을 기록하는 setCreateDate() 메서드가 있다고 해보자. 프로젝트 내에 있는 모든 클래스의 인스턴스가 생성될 때의 시각을 기록하도록 하고 싶다면, 나는 모든 클래스에 해당 메서드를 작성해주어야한다. 이러한 반복은 추상 클래스로 해결할 수 있다. 추상 클래스란 무엇일까?abstract class: 일반 메서드와 추상 메서드를 가진다. 일반적인 클래스와 다르게 인스턴스를 생성할 수 없다.public abstract class BaseTimeEntity { private LocalDateTime createDate; public Ba..