본문 바로가기
Java

자바 중급 025. final 필드

by Smart Factory in 2020 2021. 9. 11.
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
반응형

댓글