final

김수환·2023년 9월 30일
0

final

: 마지막의, 최후의

final 키워드는 불변성에 포인트를 두고 있다.
정확한 정의는 오직 한번 할당 될 수 있음이다.

사용법

final 변수

final 키워드가 붙은 변수는 초기화 후 변경할 수 없다.

final String hello = "hello Human";

final 함수

final 함수는 Override가 안된다.

class Example {
    final String hello = "hello Human";

    final String getHello() {
        return hello;
    }
}

다음과 같이 Example 클래스를 상속하는 클래스에서는 getHello()를 재정의할 수 없다.
Override하려고 하면 컴파일 에러가 발생한다.

class Child extends Example {
    final String hello = "hello world";

	@Override // !컴파일 에러!
    final String getHello() {
        return hello;
    }
}

final 클래스

클래스에 final을 붙이면 다른 클래스가 상속할 수 없는 클래스가 된다.

final class Example {
    final String hello;
    Example() {
        hello = "hello Human";
    }
}

다음과 같이 final 클래스를 상속하려고 하면 컴파일 에러 발생.

class Child extends Example{ // !컴파일 에러!
}

static final

클래스에 존재하는 단 하나의 상수

위와 같이 config용 변수에 사용하는 경우가 많다.

final 왜 쓰나?

개발은 혼자하는것이 아니다. 그렇기에 final 키워드를 붙여줌으로써 다른 팀원이 값을 변경하지 못하게 하는 것이다.
final 키워드를 가진 클래스, 변수, 함수는 불변성, Read-only 속성을 가진다.

상수값으로 사용하기 때문에 static 과 함께사용하는 경우가 많다.

static final 왜 쓰나?

static final을 사용하는 이유는, 해당 변수의 데이터, 의미, 용도를 고정하겠다는 뜻이다.

바뀔 염려가 없는 값(ex. 크리스마스는 '1225')은 static final로 선언하여 인스턴스가 생성될 때마다 새로 메모리에 초기화되는 작업을 하지 않도록 한다.
고정된 값으로 클래스 레벨에서 한 번만 할당되어 애플리케이션 종료 시점까지 사용된다면 메모리 효율성 측면에서 좋을 것이다.

static final 좋은데? 막 쓰면 안되나?

https://velog.io/@genius00hwan/%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EC%A0%90%EC%97%90%EC%84%9C-static%EC%9D%B4%EB%9E%80

static 의 무분별한 사용은 메모리 공간 낭비를 야기 할 수 있다.

profile
hello human

0개의 댓글

관련 채용 정보