#019. final 예약어 알아보기...
1. final 이란 예약어가 붙으면, 우리는 더 이상 뭔가를 할 수 없다는 것을 기억하면 되겠다.
2. final 이 사용하는 위치에 따라서 의미가 달라진다. 그 의미는 아래와 같다.
1. public final class: class 에서의 final 의 의미는 "상속을 금지"한다. 2. public final void view() { }: method 에서의 final 의 의미는 "재정의 금지"한다. 3. public final int MAX_SIZE=32: 변수 에서의 final 의 의미는 "값 변경 금지"한다. |
3. 뭐.. 확인해봤자 출력은 안되지만, 에러의 모습을 확인 해보자.
테스트를 위해 oop2 패키지에 Final class / FinalMethod class / FinalDemo class 를 만들어보자.
1) Final Class / FinalMethod Class (Final.java)
코드 | package oop2;
// final 예약어가 붙은 class : 상속불가 public final class Final {
// final 예약어가 붙은 변수 : 값변경 불가 public final int i = 2;
}
// final method 테스트를 위한 클래스 만들기 class FinalMethod {
// final 예약어가 붙은 method : 재정의 불가 public final void print(){ }
} |
설명 | 문장4: Final class 에 예약어를 붙여서 본문 중 3-2)에서 테스트를 한다. 문장7: Final class 의 member i 에 예약어를 붙여서 본문 중 3-3)에서 테스트를 한다. 문장15: FinalMethod class 의 print method 에 예약어를 붙여서 본문 중 3-4)에서 테스트를 한다. |
2) FinalDemo Class (FinalDemo.java) : 클래스에 붙였을 경우..
코드 | package oop2; // 앞에서 만든 Final class로 부터 상속을 받으면.. public class FinalDemo extends Final { public static void main(String[] args) {
} } |
설명 | 문장3: Final class에 Final class 로부터 상속을 받으려고 하니 빨간색 밑줄이 그어지며 x표시가 생겼다. |
3) FinalDemo Class (FinalDemo.java) : 멤버변수에 붙였을 경우...
코드 | package oop2;
public class FinalDemo { public static void main(String[] args) {
// 앞에서 Final Class에 i 멤버변수가 final로 선언이 되어있다. Final fi = new Final(); fi.i = 100; } } |
설명 | 문장7: Final class로부터 fi 객체를 만들었다. 문장8: fi 객체의 멤버변수 i 의 값을 변경하려고 하니 빨간색 밑줄이 그어지며 x표시가 생겼다. |
4) FinalDemo Class (FinalDemo.java) : 메서드에 붙였을 경우...
코드 | package oop2;
public class FinalDemo extends FinalMethod { @Override public void print() {
System.out.println("aaaa"); } } |
설명 | 문장3: FinalMethod 로부터 상속을 받는다. 문장5: FinalMethod 의 print method 를 재정의 하려고 하니 빨간색 밑줄이 그어지며 x표시가 생겼다. |
위와 같이 final 이란 예약어가 들어가면, 더 이상 뭔가를 할 수 없다는 것을 기억하자...
다음시간엔 Collection Set / List / Map 에 대해서 알아보자...
잡담. final 종결자?^^.. 오늘도 고생하셨네요.. 그날이 올 때까지.. 화이팅..*^^*
'Developer > Java-oop' 카테고리의 다른 글
#021. Collection HashSet<E> 알아보기... (0) | 2011.04.10 |
---|---|
#020. Collection Set / List / Map 알아보자... (0) | 2011.04.08 |
#018. Interface (인터페이스) 알아보기... (0) | 2011.04.07 |
#017. abstract (추상화) 알아보기... (0) | 2011.04.06 |
#016. method overriding (메서드 재정의) 알아보기... (0) | 2011.04.01 |