SECTION
Published 2020. 6. 27. 23:06
[JAVA] final JAVA

 


- final 키워드

 

: java에서 final 키워드는 여러 constant에서 단 한 번만 할당 될 수 있는 entity를 정의할때 사용됨

: 개발 의도는 반드시 본 변수, 함수, 클래스는 final로 제한되어야 함을 보여줌.

: 클래스와 메소드를 제한함으로써 Override로 인한 실수를 최소화 하고 버그를 줄이기 위해 선언함

: 코드 가독성을 위해서 씀

 

:  final은 Immutable/Read-only 속성을 선언하는 지시어.


 

- Final classes

fianl class FinalClass{
	...
}

// 컴파일 오류, 상속 받을 수 없음
class TestClass extends FinalClass{
	...
}

: final 지시어를 통해 클래스 상속을 제한함


 

- Final methods

public class FinalClass {
    public void A1() {...}
    public final void A2() {...}

    public static void B1() {...}
    public static final void B2() {...}
}

public class TestClass extends FinalClass {
    public void A1() {...}  // 오버라이딩 가능 
    public void A2() {...}  // 불가능

    public static void B1() {...}  // 오버라이딩 가능
    public static void B2() {...}  // 불가능
}

: final 지시어를 통해 메소드 오버라이드를 제한함


 

- Final variables

public class FinalClass {
  final int AAAA = 10; // 상수 정의, 10으로 고정

  void test() {
    int[] intArray = new int[AAAA]; // 상수 활용
    AAAA = 50; // 컴파일 오류, final 필드 값은 상수으므로 변경할 수 없다.
  }
}

 

: final 지시어를 이용해 Immutable 선언함

 

 

+) 프로그램 전체에서 공유할때

: static +  final 키워드

: static을 안 넣을 경우 인스턴트가 만들어 질때 마다 메모리를 잡고 초기화를 시키기 때문

: 꼭 final을 쓰면 static을 넣는게 아님! 인스턴트를 생성하고 한 번만 초기화 하고 쭉 변화없이 쓸 내용이면 가능

: DI(Dependency Injection) 기법을 이용해 클래스 내부에 외부 클래스 의존성을 집어넣는 경우임.


참고

https://djkeh.github.io/articles/Why-should-final-member-variables-be-conventionally-static-in-Java-kor/

https://blog.lulab.net/programming-java/java-final-when-should-i-use-it/

https://advenoh.tistory.com/13

https://gmlwjd9405.github.io/2018/08/06/java-final.html

 

 

 

profile

SECTION

@SectionR0

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그