final
- 변수에 final 키워드가 붙으면 더는 값을 변경할 수 없다.
■ final 변수
public class A {
public static void main(String[] args) {
fianl int data1; // final 지역 변수
data1 = 10; //최초 한번만 할당 가능
final int data2 = 10; //final 지역 변수2
method(10);
}
static void method(final int parameter) {
//parameter = 20; 컴파일 오류
}
}
- final 붙은 지역 변수는 최초 한 번만 값을 할당할 수 있고, 값을 변경하게 되면 에러 발생
- 필드(멤버 변수)에도 객체가 생성될 때 필드를 초기화해야하며, 그 이후엔 필드 값 변경할 수 없다.
■ final 메서드
public class Animal {
public final void eat() {
System.out.println("동물은 먹는다");
}
}
public class Dog extends Animal {
public void eat() {
System.out.println("강아지는 먹는다.");
}
}
- final로 선언되면, 하위 클래스에서 해당 메서드를 오버라이드(재정의)할 수 없다.
- eat() 메서드를 오버라이드할 수 없음 (에러발생)
■ final 클래스
final class A {
final String hello;
A() {
hello = "hello world";
}
}
class B extends A { //컴파일 에러
}
- 클래스에 final 붙이게 되면 상속할 수 없는 클래스가 됨
■ static final
- static + final = "고정된 + 최종적인"의 의미로, 상수를 선언하고자 할 때 사용
상수란?
static final double PI = 3.141592;
static + final로 선언된 PI 값은 3.141592라는 불변의 값을 가진다.
해당 값은 객체마다 저장될 필요가 없는 static 특징 + 여러 값을 가질 수 없는 final의 특징을 나타낸다.
'JAVA' 카테고리의 다른 글
[JAVA] 다형성(1) - 다형성 참조, 캐스팅, instanceof 연산자 (0) | 2025.03.23 |
---|---|
[JAVA] 상속 (0) | 2025.03.20 |
[JAVA] static 변수, static 메서드 (0) | 2025.03.01 |
[JAVA] 접근제어자 (private, public, protected, default) (1) | 2025.02.21 |
[JAVA] this, 생성자, this() (0) | 2025.02.16 |