보혀니 2021. 11. 30. 01:14

 

제어자, 접근제한자

 

예제들

 

static 예제

1

 

 

 

생성자를 이용한 final 멤버의 변수 초기화 예제

+ )

final 필드

최종적인 필드

초깃값이 저장되면 이것이 최종적인 값이 되어 프로그램 실행 도중 수정할 수 없다.

 

final 필드 선언

final 타입 필드 [=초깃값];

=> final 필드에 초기값을 줄 수 있는 방법은 딱 2가지 뿐

   1. 필드 선언시에 주는 방법

   2. 생성자에서 주는 방법

 

 생성자는 final 필드의 최종 초기화를 마쳐야 하므로, 초기화 되지 않는 final 필드가 남아있으면

컴파일에러가 발생한다.

ex) 주민등록번호는 Person 객체가 생성될 때 부여되므로 초기값을 미리 줄 수 없다.

따라서 생성자의 매개값으로 주민등록번호를 받아서 초기값으로 지정한다.

또한 고정된 값을 갖는 경우 선언시 초긱값을 지정해주면 됨

final String nation = "korea";  : 이런식으로

 

수학에서의 파이, 지구의 둘레 값 등... 불변의 값을 저장하는 필드는 상수라고 한다.

그렇다면, final 필드를 상수라고 불러도 되지않을까?

NO. final필드를 상수라고 부르지 않는다.

final 필드는 객체마다 저장되고, 생성자의 매개값을 통해 여러가지 값을 가질 수 있음(=상수가 될 수 없다.)

 

상수선언 방식

static final 필드는 객체마다 저장되지 않고, 클래스에만 포함되고, 한 번 초기화되면 변경할 수 없다.

stratic final 타입 상수 [=초기값];

 

참고

https://jdpb.tistory.com/entry/Java-final-%EC%83%81%EC%88%98

 

 

 

 

접근제어자를 통한 캡슐화 예제