728x90
반응형

안녕하세요. 스마트 팩토리입니다.
자바 중급 025. final 필드에 대해 알아보겠습니다.
1. final 필드
가. final 필드
-멤버 변수의 최종값을 나타낸다.
- 값을 변경할 수 없는 필드
- class앞에 붙어서 상속 불가하다.
나. final 필드 초기화
- 멤버 변수 선언시 초기화.
- 생성자는 단한번 초기화
다. 예제(1)
<<Member.java 클래스 >>

Member 클래스에서 멤버 변수 앞에 final을 넣어 final필드로 만들었습니다.
final String nation="Korea";
final int age;
package ex03;
public class Member {
final String nation="Korea";
final int age;
public Member(int age) { --> 생성자
this.age=age;
}
// public Member(String nation, int age) {
// this.nation=nation;
// this.age =age;
// }
@Override
public String toString() { --> 오버라이드 추후 설명하겠음- 지금은 toStirng() 메소드라고 봅니다.
String str="nation: "+this.nation+"\n"+"age :"+this.age;
return str;
}
}
<<MemberEx.java 실행 클래스>>

객체를 생성하기 위해서 m1으로 만들었습니다.
age 값은 30
toString()메소드를 실행하니 해당 국가와 나이가 나오는 것을 알 수 있습니다.
여기서 age는 입력값에 따라 변경이 가능하지만 nation은 변경할 수 없습니다.
package ex03;
public class MemberEx {
public static void main(String[] args) {
Member m1=new Member(30);
System.out.println(m1);
}
}
다. 예제(2)

final String nation="Korea";
final int age=25;
는 고정값이 되어서 실행 클래스에서도 그대로 출력이 됩니다 .


m1. 으로 클래스의 멤버 변수 값을 수정하여 객제를 생성하려고 하면 에러가 발생하는 것을 볼 수 있습니다.
<<final을 지우면?>>

final String nation="Korea"; ---> String nation="Korea";
final int age=25; ---> final int age=25;
final필드를 지우면 초기 값은 그대로 출력되고 ,
수정하면 수정되는데로 출력되는 것을 볼 수 있습니다.



728x90
반응형
'Java' 카테고리의 다른 글
| 자바 중급 027. 오버라이딩(overriding)-재정의 (0) | 2021.09.12 |
|---|---|
| 자바 중급 026. 상속, 오브젝트 클래스 (object 클래스)- 모든 클래스의 조상 클래스 (0) | 2021.09.12 |
| 자바 중급 024. 상속(inheritance) -부모클래스 , 자식클래스 관계(2) (0) | 2021.09.10 |
| 자바 중급 023. 상속(inheritance) -부모클래스 , 자식클래스 관계(1) (0) | 2021.09.10 |
| 자바 중급 022. 인스턴스 초기화 블럭, 정적 초기화 블럭,초기화 순서(2) (0) | 2021.09.09 |
댓글