[Java] final과 상수

Bam·2024년 2월 28일
0

Java

목록 보기
30/98
post-thumbnail

final

클래스를 만들며 생성한 멤버 변수(필드)들은 언제든지 자유롭게 값을 변경할 수 있습니다. 하지만 때에 따라서는 값을 고정시키고 읽기만을 허용시켜야하는 경우가 있습니다. 이때 사용하는 키워드가 바로 final입니다.

final 키워드를 사용해서 선언한 멤버 변수는 초기화 이후로는 값을 변경할 수 없습니다. final 필드는 다음과 같이 변수 선언 맨 앞에 final 키워드를 붙여 선언합니다.

final 타입 이름 = 초기값;
//외부로부터 값을 받는다면 생성자에서 초기화도 가능

선언과 동시에 초기화 또는 생성자를 이용한 초기화를 하지 않는다면 오류가 발생합니다.

다음 코드는 final 필드를 사용한 클래스입니다.

public class Car {
    final public String color;

    public Car() {
        this("White");
    }
    public Car(String color) {
        this.color = color;
    }
}
public static void main(String[] args) {
	Car car1 = new Car("Black");
	Car car2 = new Car();

	System.out.println("car1의 색상: " + car1.color);
	System.out.println("car2의 색상: " + car2.color);
}

만약 final 필드를 변경하려고 하면 다음과 같이 final 필드를 변경할 수 없다는 오류를 발생시킵니다.

Car car1 = new Car("Black");
Car car2 = new Car();

car1.color = "Yellow";

final 클래스

클래스에도 final 키워드를 붙일 수 있습니다. 클래스에 final이 붙는 경우 상속을 할 수 없습니다.

final 메소드

final이 붙은 메소드의 경우 메소드 오버라이딩을 할 수 없습니다.


상수

상수(constant)는 원주율을 나타내는 수학 기호 파이의 값 3.14처럼 변하지 않는 값을 말합니다. 이러한 상수는 변하지 않고, 여러 번 선언할 이유도 없기 때문에 전역에서 사용할 수 있도록 static과 변하지 않는 final키워드를 두 개를 동시에 사용해서 상수를 선언합니다.

static final double pi = 3.14;

0개의 댓글