[JAVA] final의 용도

SCY·2023년 1월 31일
0

final은 무엇일까.
변수(variable), 메서드(method), 클래스(class)에 사용될 수 있다.
final은 무언가를 제한한다는 의미를 지닌다.

변수

final 변수는 값을 할당하면 더 이상 수정할 수 없다 (read-only). 때문에 초기화는 필수이다. 꼭 선언과 초기화를 같이 할 필요는 없다. 선언은 함께하고 각 메서드에서 다른 값으로 초기화할 수도 있다.

public class Service {

    public void variableFinal() {

        final int value = 2;
        final Person person = new Person("Lucy", 29);

        // value = 3; -> 컴파일 에러
        // person = new Person("Jane", 29); -> 컴파일 에러
        person.setAge(10);
        person.setName("Son");
    }
}

위와 같이 객체 내부 변수는 변경이 가능하나, 객체 자체를 변경할 순 없다.

  • 메서드 내부 변수
    • 선언 시 초기화
    • 사용하기 전 초기화

  • 객체 멤버 변수
    • 선언 시 초기화
    • 생성자를 이용한 초기화
    • 초기화 block을 이용한 초기화

번외

static은 메모리에 한 번만 할당, 즉 같은 주소값을 공유한다.
static final을 함께 사용하면 효율성이 높아진다.

메서드

메서드에 final을 붙이면 override를 제한한다.

클래스

final 키워드를 클래스에 붙이면 상속 불가능 클래스가 된다.
보안아니 효율성 측면에서 장점이 있다.

profile
성장 중독 | 서버, 데이터, 정보 보안을 공부합니다.

0개의 댓글