-
TIL - Final 키워드JAVA/자바공부 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("호흡") } }
출처 / 더 많은 내용
반응형'JAVA > 자바공부' 카테고리의 다른 글
정규식 표현 (자바, 코틀린) - 전화번호, 우편번호, 이메일 (0) 2022.10.14 자바 17로 바꿔야 할까? (자바 JDK 10 ~ 17 정리) (1) 2022.10.01 Optional<> 과 Null (이론편) (0) 2022.07.15 TIL - 제네릭(generic) 정리 (0) 2022.02.04 TIL - 자바를 잡아라 (1) 2022.01.06 - Final 키워드가 나타날 수 있는 곳은 딱 3 군데다.