-
[JAVA 29] 자바 ③ 수정 제한자 ( final )Language/Java 2018. 2. 14. 12:34반응형
3) 수정 제한자 ( final )
(1) 변수에 final 이 붙으면 상수가 되기 때문에 수정을 할 수 가 없다.
(2) 특징
① Class ( 클래스 ) , Variable ( 변수 ) , Method ( 메소드 ) 앞에 붙을 수 있다.
Constructor ( 생성자 ) 는/은 왜 안될까?
< Constructor 는 Overriding 이 되지 않는다. > ← 드래그 해서 보세요.
② Class ( 클래스 ) 앞에 붙으면 자식을 못 낳는다. 즉 , 마지막 자식이 된다.
Method ( 메소드 ) 앞에 붙으면 Overriding ( 오버라이딩 / 재정의 ) 가 되지 않는다.
123456789101112131415161718192021222324final class FinalS2 { // 클래스 finalfinal int STUDENT_NUMBER = 1;final void m(){System.out.println("STUDENT_NUMBER : " + STUDENT_NUMBER);}public static void main(String[] args){new FinalS2().m();}}class User extends FinalS2{ // final 클래스 상속void m(){System.out.println("오버라이딩");}public static void main(String[] args){new User().m();}}error : cannot inherit from final FinalS2 class User extends FinalS2
에러 : class User extends FinalS2 는 final FinalS2 으로부터 상속 받을수 없다.
error : m() in User cannot override m() in FinalS2 void m()
에러 : User 안의 m() 은 FinalS2 void m() 재정의 할 수 없다.
Variable ( 변수 ) 앞에 붙으면 상수가 된다. 즉 , 초기값을 바꿀수가 없다.
12345678910111213class FinalS1 { // final Study 1final int STUDENT_NUMBER = 1;final void m(){STUDENT_NUMBER = 2; // 초기값을 바꾸어 보았다.System.out.println("STUDENT_NUMBER : " + STUDENT_NUMBER);}public static void main(String[] args){new FinalS1().m();}}cs error : cannot assign a value to final variable STUDENT_NUMBER
에러 : 상수 STUDENT_NUMBER 에 값을 할당할수 없다.
④ static final member variable 이 많은 이유가 있다.
생각해봅시다.
반응형'Language > Java' 카테고리의 다른 글
[JAVA 28] 자바 식별자 ( Identifier ) (0) 2018.02.14 [JAVA 27] 자바 ④ 추상 제한자 ( abstract ) < 추상 메소드 / 추상 클래스 > (0) 2018.02.14 [JAVA 26] 자바 ② 소유 제한자 ( static ) (0) 2018.02.14 [JAVA 25] 자바 ① 접근 제한자 ( Access Modifier ) (public / protected / default / private) (0) 2018.02.13 [JAVA 24] 자바 제한자 ( Modifier ) 접근제한자 / 소유제한자 / 수정제한자 / 추상제한자 / 기타제한자 (0) 2018.02.13