본문 바로가기

Developer/Java-oop

#019. final 예약어 알아보기...

#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 종결자?^^.. 오늘도 고생하셨네요.. 그날이 올 때까지.. 화이팅..*^^*