English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 예제를 통해 Java final 변수, final 메서드, final 클래스를 배웁니다.
Java에서 final 키워드는 상수를 나타냅니다. 변수, 메서드, 클래스와 함께 사용할 수 있습니다.
final로 선언된 모든实体(변수, 메서드, 클래스)은 한 번만 할당할 수 있습니다. 즉,
final 변수는 다른 값으로 재초기화할 수 없습니다
final 메서드는 재정의될 수 없습니다
final 클래스는 상속될 수 없습니다
Java에서 final 변수의 값을 변경할 수 없습니다. 예를 들어,
class Main { public static void main(String[] args) { //final 변수 생성 final int AGE = 32; //final 변수를 변경 시도 AGE = 45; System.out.println("Age: "} + AGE); } }
위의 프로그램에서, age라는 final 변수를 생성했습니다. 그리고 final 변수의 값을 변경하려고 시도했습니다.
프로그램을 실행할 때, 다음과 같은 오류 메시지가 표시됩니다. 컴파일 오류가 발생했습니다.
cannot assign a value to final variable AGE AGE = 45; ^
주의:Java에서 final 변수를 선언할 때 대문자 형식을 사용하는 것이 좋습니다.
final 메서드와 final 클래스를 이해하기 전에, Java final 메서드를 잘 이해해야 합니다.Java 상속.
Java에서 final 메서드는 자식 클래스에 의해 덮어쓰일 수 없습니다. 예를 들어,
class FinalDemo { //final 메서드 생성 public final void display() { System.out.println("이는 Final 메서드입니다."); } } class Main extends FinalDemo { //final 메서드를 재정의 시도 public final void display() { System.out.println("Final 메서드가 덮어쓰였습니다."); } public static void main(String[] args) { Main obj = new Main(); obj.display(); } }
위의 예제에서, FinalDemo 클래스 내부에 display()로 명명된 final 메서드를 생성했습니다. 여기서, Main 클래스는 FinalDemo 클래스를 상속합니다.
Main 클래스에서 final 메서드를 덮어쓰려고 시도했습니다. 프로그램을 실행할 때, 다음과 같은 오류 메시지가 표시되어 컴파일 오류가 발생합니다.
Main에서 display()를 override할 수 없습니다. FinalDemo에서 display()를 override합니다 public final void display() { ^ override된 메서드는 final입니다
Java에서 final 클래스는 다른 클래스에 의해 상속될 수 없습니다. 예를 들어,
final class FinalClass { //final 메서드 생성 public void display() { System.out.println("이것은 final 메서드입니다."); } } class Main extends FinalClass { //final 메서드를 재정의 시도 public void display() { System.out.println("final 메서드를 재정의합니다."); } public static void main(String[] args) { Main obj = new Main(); obj.display(); } }
위의 예제에서는 FinalClass라는 final 클래스를 생성했습니다. 여기서는 Main 클래스를 통해 final 클래스를 상속시도합니다.
프로그램을 실행할 때, 다음과 같은 오류 메시지가 표시됩니다. 컴파일 오류가 발생했습니다.
cannot inherit from final FinalClass class Main extends FinalClass { ^