Java

[Java] final

wwxs 2024. 9. 9. 17:29

final

  • 변수, 메서드, 클래스

1. final 변수

  • 상수를 지정하는 키워드
  • 재할당 불가능, 선언과 동시에 초기화
  • 변수명을 모두 대문자로 작성, 단어와 단어의 연결을 (_)기호로 연결

2. final 메서드

  • 자식 클래스에서 오버라이드(재정의) 할 수 없는 메서드를 의미
  • 접근 제어자 final 반환타입 메서드명 ( ) { }

3. final 클래스

  • final class 클래스명
  • 더 이상 상속될 수 없는 클래스를 의미
  • final 클래스를 부모 클래스로 사용할 수 없다

 

더보기
더보기
class MyFinalClass {
	// final 변수
    final int FINAL_VALIABLE = 30;
	// FINAL_VALIABLE = 10; - Error
    
    // final 메서드
    public final void myMethod() {
		System.out.println("재정의 할 수 없는 메서드");
	}
}

// final 클래스
final class ChildClass extends MyFinalClass {
//	@Override
//	public void myMethod() {
//		
//	}
	// : 상속받은 final 메서드는 자식 클래스에서 재정의 되지 X
	// >> 생략된 형태만으로 사용 가능
}

//class GrandSon extends ChildClass{	 - Error(final 클래스를 상속받지 못함)
//	
//}

 

final 장단점

 

1. 장점

  • 불변성 : 안정성 보장

2. 단점

  • 유연성 감소 : 상속 X, 오버라이딩 X

 

(cf. 하이픈 VS 언더스코어)

더보기
더보기

하이픈 (-)

choco-cake : 하이픈을 기준으로 단어가 나뉜다 (두 단어)

언더스코어 (_)

choco_cake : 언더스코어는 단어를 나누지 않는다 (한 단어)