Springboot

[Java] Final 키워드

eunyeong 2022. 1. 19. 11:56

● 자바에서 절대 변하지 않는 특정한 것을 정하고 싶을 때 Final 키워드를 사용합니다.

● 이 키워드는 변수, 메소드, 클래스에 모두 사용할 수 있습니다.

● 변수에 사용할 경우 변하지 않는 상수가 되며, 메소드에 사용할 경우 재정의가 불가능한 메소드가 되며, 클래스에 사용할 때는 상속이 불가능한 하나의 완전한 클래스가 됩니다.

 

 

- 변수에 사용할 경우

public class Main {

	public static void main(String[] args) {
		final int number = 10; // 상수
		number = 5; // 에러
		System.out.println(number);
	}

}

 

- 메소드에 사용할 경우

# Parent.java

public class Parent {
	public final void show() { // final 키워드로 메소드 지정
		System.out.println("Hi");
	}
}
//Main.java

public class Main extends Parent {
	public void show() {
		System.out.println("Hello"); //오버라이딩(함수의 재정의) 불가능
	}
	public static void main(String[] args) {
		Main main = new Main();
		main.show();
	}

}

에러메세지

Error: LinkageError occurred while loading main class Main
java.lang.VerifyError: class Main overrides final method Parent.show()V

 

- 클래스에 사용할 경우

// Parent.java

final class Parent { //final 키워드로 클래스 지정
	public void show() {
		System.out.println("Hi");
	}
}
//Main.java

public class Main extends Parent { // 상속 불가능
	public void show() {
		System.out.println("Hello");
	}
	public static void main(String[] args) {
		Main main = new Main();
		main.show();
	}

}

 

에러메세지

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

at Main.main(Main.java:6)