이번 포스팅은 자바에서 final 키워드에 대해 포스팅하려고 합니다.
스프링 프로젝트를 하면 DI를 할 때나 static 키워드를 선언할 때, 변하지 않는다는 개념으로 사용하는데, 사용하면서도 계속 무슨 의미인지 헷갈리는 느낌이 있어 공부할 겸 포스팅해보려고 합니다.
상속을 해 줄 수 없습니다..
오버라이딩을 할 수 없게 됩니다.
경우 더 이상 변수를 바꿀 수 없다는 것을 의미합니다.
변수 선언과 함께 값을 지정
해야 합니다. 그렇지 않으면 컴파일 에러가 납니다.public class Final {
private static final String FINAL = "final";
private final int age;
public Final(int age) {
this.age = age;
}
}
public class Final {
private static final String FINAL = "final";
public void test() {
FINAL = "바꿀 수 있나요?";
}
}
초기화할 필요가 없습니다.
이미 초기화된 변수
가 넘어오는 것이고,{}
내에서만 사용하므로 다른 곳에서 변경할 일이 없기
때문입니다.public class Final {
public void test(final int parameter) {
final String a;
a = "안 바뀜";
a = "바뀌나요?";
parameter = 2;
}
}
public class Final {
private final Person person = new Person();
public void test() {
// 1)
person = new Person();
// 2)
person.age = 1;
// 3)
person.name = "이름";
}
static class Person {
String name;
int age;
}
}
class Person {
String name;
int age;
}
즉, person 자체에는 fianl이 붙어 새로운 참조 값을 선언할 수 없지만
, person에 속해 있는 인스턴스들은 final이 선언되지 않았기 때문에 변경이 가능합니다.
Reference