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)