반응형
- final 필드란?
- 객체마다 가지는 불변의 인스턴스 필드
- 값을 변경할 수 없는 필드
- final 필드의 딱 한번의 초기값 지정 방법
1.필드 선언시 방법
public class Person {
final String nation = "Korea";
}
처음에 "Korea"가 대입이 되면 final로 인해서 nation은 수정될 수 없게 된다.
즉, Korea 로만 사용해야 함.
2.생성자에 주는 방법
public class Person {
final String ssn;
String name;
public Person(String ssn, String name) {
this.ssn = ssn;
this.name = name;
}
}
초기값 없이 선언된 final 필드 생성자에서만 값을 줄 수 있다.
이 방식을 쓰는 이유는
ex) 사람이 태어나서 주민등록번호가 주어지는데 그 때 부여하고 다음에 변경 못하게 하기 위함.
name 은 final이 아니기 때문에 언제든 바꿀수 있다.
- 실습
1. 클래스를 생성한다.
public class Person {
final String nation = "Korea";
final String ssn;
String name;
public Person(String ssn, String name) {
this.ssn = ssn;
this.name = name;
}
}
nation과 ssn은 final로 지정.
nation은 필드에서 값을 할당한다.
생성자를 만든다.
2. 실행 클래스를 만든다 (main 메서드)
public class PersonExample {
public static void main(String[] args) {
Person p1 = new Person("123456-1234567", "아무개");
System.out.println(p1.nation);
System.out.println(p1.ssn);
System.out.println(p1.name);
//p1.nation = "usa";
//p1.ssn = "654321-7654321";
p1.name = "무지개";
System.out.println(p1.name);
}
}
Person 객체를 생성하고,
ssn자리에 주민번호와 name 자리에 이름을 입력한다.
그리고 출력해보면 지정한 값이 나온다.
다음에 // 주석 처리된 코드를 보면
nation에 usa와 ssn에 다른 주민번호를 재할당 해본다.
그럼 컴파일 에러가 날것이다.
final로 인해서 값을 바꿀수 없기때문이다.
반면 name은 final이 아니기 때문에 "무지개"로 재할당 해보면 바뀐것을 확인할 수 있다.
최종적으로 name을 다시 출력해 보면 무지개로 바뀐것을 알 수있다.
반응형
'study > JAVA' 카테고리의 다른 글
어노테이션(Annotation) (0) | 2022.02.22 |
---|---|
Getter와 Setter (0) | 2022.02.18 |
접근 제한자( Access Modifier) (0) | 2022.02.18 |
상수(static final) (0) | 2022.02.14 |
싱글톤(Singleton) 생성과 얻는법 (0) | 2022.02.14 |
댓글