반응형
이번 포스팅에서는 자바(Java)에서 final 예약어에 대하여 공부를 해보고자 한다.
final 예약어란
final은 '마지막'이란 의미를 갖고 있다.
즉, 마지막으로 정한 것이니 더 이상 수정할 수 없다는 뜻이다.
자바 프로그램에서 final 예약어는 변수, 메서드, 클래스에 사용할 수 있다.
사용 위치 | 설명 |
변수 | final 변수는 상수를 의미한다. |
메서드 | final 메서드는 하위 클래스에서 재정의할 수 없다. |
클래습 | fianl 클래스는 상속할 수 없다. |
상수를 의미하는 final 변수
public class Constant {
int num = 10;
final int NUM = 100; //상수 선언
public static void main(String[] args) {
Constant cons = new Constant();
cons.num = 50;
//cons.NUM = 200; 상수에 값을 대입하여 오류 발생
System.out.println(cons.num);
System.out.println(cons.NUM);
}
}
- int num과 final int NUM 총 두 개의 변수를 선언했다.
(변수 이름은 대소문자를 구별하기 때문에 두 변수는 다른 변수다.) - 7행에 num으로 선언한 변수에는 다른 값을 대입할 수 있다.
- 8행에 상수로 선언한 NUM에는 다른 값을 대입할 수 없다.
여러 자바 파일에서 공유하는 상수 값 정의
public class Define {
public static final int MIN = 1;
public static final int MAX = 99999;
public static final int ENG = 1001;
public static final int MATH = 2001;
public static final double PI = 3.14;
public static final String GOOD_MORNING = "Good Morning!";
}
- 프로그램에서 사용할 상수 값들을 선언했다.
- 상수를 모두 public 예약어로 선언했으므로 이들 값은 외부에서도 사용할 수 있다.
- 모든 상수를 static으로 선언했기 때문에 인스턴스를 생성하는 것과 관계없이 클래스 이름으로 참조할 수 있다.
위에서 선언한 상수를 사용하는 코드
public class UsingDefine {
public static void main(String[] args) {
//static 으로 선언되었으므로 클래스 이름으로 참조한다.
System.out.println(Define.GOOD_MORNING);
System.out.println("최솟값은 " + Define.MIN + "입니다.");
System.out.println("최댓값은 " + Define.MAX + "입니다.");
System.out.println("수학 과목 코드 값은 " + Define.MATH + "입니다.");
System.out.println("영어 과목 코드 값은 " + Define.ENG + "입니다.");
}
}
출력 결과
Good Morning!
최솟값은 1입니다.
최댓값은 99999입니다.
수학 과목 코드 값은 2001입니다.
영어 과목 코드 값은 1001입니다.
상속할 수 없는 final 클래스
- 클래스를 final로 선언하면 상속할 수 없다.
- 상속을 하면 변수나 메서드를 재정의할 수 있는데, 그러면 원래 클래스가 가지고 있는 기능에 오류가 생길 수도 있다.
- 보안과 관련되어 있거나 기반 클래스가 변하면 안 되는 경우에는 클래스를 final로 선언한다.
- JDK에서 제공하는 String이나 Integer 클래스가 대표적이다.
반응형
'Back-End > Java' 카테고리의 다른 글
[Java] 인터페이스와 다형성 (0) | 2023.02.09 |
---|---|
[Java] 인터페이스(Interface) (0) | 2023.02.09 |
[Java] 템플릿 메서드(Template Method) (0) | 2023.02.07 |
[Java] 추상 클래스(abstract method) (0) | 2023.02.07 |
[Java] 다운 캐스팅과 instanceof (0) | 2023.02.06 |