JAVA/자바공부
TIL - Final 키워드
sendkite
2022. 2. 11. 00:08
Final 키워드 정리
- Final 키워드가 나타날 수 있는 곳은 딱 3 군데다.
- 클래스
- 변수
- 메서드
- Spring 의존성 삽입할때도 씀
1. final과 클래스
- 상속을 허락하지 않겠다는 용도
public final class 고양이 {
// final은 상속을 허락하지 않겠다는 의미
}
// 컴파일 에러! The 도라에몽 cannot subclass the final 고양이
public final 도라에몽 extends 고양이 {
}
2. final과 변수
- 변경이 불가능한 상수(값)으로 선언
- 최초 한번만 초기화 할 수 있다.(**** 매우 중요)
final static int 정적상수1 = 1;
final static int 정적상수2;
final int 객체상수1 = 1;
final int 객체상수2;
static {
// ok. 최초 초기화
// static 변수는 static 블록에서 초기화
정적상수2 = 2;
// 에러! 한번 초기화 하면 다시 재할당 할 수 없다.
// 정적상수2 = 4;
}
고양이() {
//ok. 최초 초기화
//객체 인스턴스화, 생성자에서 초기화
객체상수2 = 4;
// 에러! 한번 초기화 하면 다시 재할당 할 수 없다.
// 객체상수2 = 5;
// Local 변수도 마찬가지 룰
final int 지역상수1 = 1;
final int 지역상수2;
지역상수2 = 2;
}
// 매개변수에도 쓰면 재할당을 방지한다
// Service에 Create 로직 예문
public List<TodoEntity> create(final TodoEntity entity){
// 검증, save, return 세 단계로 구성
// 1. validation
validation(entity);
// 2. save
repository.save(entity);
log.info("Entity Id : {} is saved", entity.getUserId());
// 3. return
return repository.findByUserId(entity.getUserId());
}
3.Final과 메서드
- 재정의 즉 오버라이딩이 금지된다.
public class 동물 {
final void 숨쉬기() {
System.out.println("호흡")
}
}
class 포유류 extends 동물() {
// 에러! Cannot override the final method from 동물
void 숨쉬다() {
System.out.println("호흡")
}
}
출처 / 더 많은 내용
반응형