-
Java - 추상 클래스(final 예약어)5카테고리 없음 2023. 11. 4. 07:41
final 예약어
사용 위치 설명 변수 final 변수는 상수를 의미한다. 메서드 final 메서드는 하위 클래스에서 재정의할 수 없다.(템플릿 메서드) 클래스 final 클래스는 상속할 수 없다.
상수를 의미하는 final 변수
package finalex; 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); //50 System.out.println(cons.Num); //100 } }
여러 자바 파일에서 공유하는 상수 값 정의하기
프로젝트를 하다 보면 여러 파일에서 똑같이 공유해야 하는 상수 값이 존재할 수 있다 .예를 들면 최솟값(MIN)이나 최대값(MAX), 전체에서 공통으로 적용하는 과목 코드 값 등이 있다. 이런 값을 파일마다 선언한다면 코드가 중복될 뿐만 아니라 값이 변하거나 추가될 때 그 값을 사용하는 파일을 모두 수정해야한다. 따라서 자바로 프로젝트를 진행할 때 여러 파일에서 공유해야 하는 상수 값은 한 파일에 모아 public static final로 선언하여 사용하면 좋다.
여러 파일에서 공유하는 상수
package finalex; public class Define{ public static final int MIN = 1; public static final int MAX = 9999; public static final int ENG = 1001; public static final int MATH = 2001; public static final int PI = 3.14; public static final String GOOD_MORNING = "Good Morning"; }
위 예제에서 상수를 모두 public 예약어로 선언했으므로 이들 값은 외부에서도 사용할 수 있다. 그리고 모든 상수를 static으로 선언했기 때문에 인스턴스를 생성하는 것과 관계없이 클래스이름으로 참조할 수 있다.
상수 사용하기
package finalex; public class UsingDefine{ public static void main(String[] args){ System.out.println(Define.GOOD_MORING); System.out.println("최솟값은" + Define.MIN + "입니다."); System.out.println("최댓값은" + Define.MAX + "입니다."); System.out.println("수학 과목 코드 값은" + Define.MATH + "입니다."); System.out.println("영어 과목 코드 값은" + Define.ENG + "입니다."); } }
상속할 수 없는 final 클래스
클래스를 final로 선언하면 상속할 수 없다. 상속을 하면 변수나 메서드를 재정의할 수 있는데, 그러면 원래 클래스가 가지고 있는 기능에 오류가 생길 수도 있다. 따라서 보안과 관련 되어 있거나 기반 클래스가 변하면 안 되는 경우에는 클래스를 final로 선언한다. JDK에서 제공하는 클래스 중에도 final로 선언한 클래스가 있다. 대료적으로 문자열을 나타내는 String이나 정수 값을 나타내는 Integer 클래스를 예로 들 수 있다. 이러한 클래스가 상속되면 클래스를 만들 대 의도한 바와 다르게 사용될 수 있으므로 final로 선언한다.
[출저 - Do it! 자바 프로그래밍 입문 , 박은종]
http://www.easyspub.co.kr/20_Menu/BookView/A001/267/PUB
http://www.easyspub.co.kr/20_Menu/BookView/A001/267/PUB
www.easyspub.co.kr