시작하며
여러분 안녕하세요!
DreamHanks의 254cm입니다.
이번에는 final에 대해서 설명해 보겠습니다.
Java의 전체 기사는 여기를 클릭해 주세요.
이전 기사는 [Java개발] 제 11회 statict에 대해서 배워봤습니다.
final
Java 프로그램에서 final의 의미는 마지막에 정했기 때문에 수정할 수 없다는 의미입니다.
즉, final이 부여된 요소는 초기화 이후에 수정할 수 없습니다.
final은 변수, 메서드, 클래스에 부여할 수 있습니다.
final 변수
1 |
final형 변수명 = 값 |
final이 부여된 변수는 정수입니다.
정수는 변하지 않는 수를 의미하며 정수로 선언한 변수는 값을 바꿀 수 없습니다.
정수는 영어 대문자와 __로 작성합니다.
보통 final 변수는 static과 조합을 해서 여러 곳에서 공유할 고정값을 지정해서 사용합니다.
샘플
1 2 3 4 5 6 7 8 9 |
public class FinalSample { final int INDEX_LIMIT = 100; public void display() { System.out.println(INDEX_LIMIT); int[] arr = new int[INDEX_LIMIT]; INDEX_LIMIT = 1005; } } |
위와 같이 final은 배열 길이 등의 변하지 않는 값을 작성하기 위해 사용됩니다.
그러나 작성된 final변수로 값을 바꾸는 동작을 하면 컴파일 오류가 나타납니다.
・객체 변수의 경우
오브젝트 변수의 경우, 필드를 변경할 수는 있지만,
개체 변수에 새 개체를 대입할 수 없습니다.
샘플
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public final class FinalSample { public static void main(String[] args) { final int RESULT = 10; RESULT++; final SampleClass SAMPLE = new SampleClass(); SAMPLE.a = 10; SAMPLE.a = 15; SAMPLE = new SampleClass(); } } class SampleClass { int a; } |
・인수의 경우
인수에도 final을 부여할 수 있습니다. 부여하면 해당 인수는 사용되는 메서드 안에서 변경할 수 없습니다.
샘플
1 2 3 4 5 |
public final class FinalSample { public void finalTestMethod(final int a) { a = 10; } } |
final 메서드
final 메서드는 상속된 자녀 클래스에서 재정의할 수 없습니다.
샘플
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class ExampleCalss extends FinalMethodTest { @Override public final void printResult() { } } class FinalMethodTest { int result = 10; public final void printResult() { System.out.println(result); } } |
final 클래스
클래스를 final을 부여하여 작성하면 그 내용을 수정할 수 있기 때문에 상속을 할 수 없습니다.
final은 변수나 메서드를 재정의하면 기능이 정상적으로 동작되지 않는 클래스에 부여하여
사용합니다.
샘플
1 2 3 4 5 6 7 8 9 |
public class ExampleCalss extends ExtendTest { public static void main(String[] args) { } } final class ExtendTest { int a; } |
위와 같이 final로 선언된 클래스는 상속을 받으면 컴파일 오류가 나타납니다.
끝으로
이번 기사는 이상입니다.
다음 시간에는 자바변수의 스코프를 배워보겠습니다.
방문해 주셔서 감사합니다.
コメント