Java

final 키워드에 대한 고찰

고인돌개발자 2021. 5. 11. 23:21

학습목표 : final 키워드에서 주의할 점을 알아본다.

final 은 최종이다.

클래스, 변수, 메소드에서 여기가 마지막이라는 표시를 해준다.

 

아래 예시를 통해 익혀보자.

 

1. final Class

   - 최종 Class 로 final 은 상속을 허락하지 않겠다는 의미이다.

   - 요즘말로, 딩크족이다. 아이를 낳지 않겠다니..

public final class Cat_Super {

}

// 상속을 허용하지 않아서 오류 발생
class Cat_Child extends Cat_Super {

}

2. final 변수 = 상수

  - 변경 불가능한 변수 즉 상수가 된다.

  - 단, 초기화 되지 않은 상수의 값은 static, 지역변수를 구분하여 초기화가 가능

package book.oopforsprings.lec04._final;

public class FinalMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Cat cat = new Cat();
		
	}

}

class Cat {
	
	final static int age=10;
	final static int age2;
	
	final int weight=20;
	final int weight2;

	// static 은 static 블록에서만 변경 가능
	static {
		// age=11; 최초 초기값이 있는 변수는 값을 받지 못함
		age2=21; // 상수 초기화 가능
	}
	
   // 아래는 오류 발생.
	public Cat() {
		//weight=11; // final 상수의 변경은 허용되지 않음
		weight2=21;  // 
	}
}

3. final Method

   - 최종 Method 로서 , 재정의(Overriding)을 할 수 없다.

public class Cat_Super {

	public void doOK() {		
	}
	
	// 내가 마지막이야.. 더 사용하지 못해
	public final void doNO() {		
	}
}

class Cat_Child extends Cat_Super {

	public void doOK() {
		System.out.println("I can override of doOK method...");
	}
	
	//Cannot override the final method from Cat_Super
	public void doNO() {
		System.out.println("I can override of doOK method...");
	}
}