그만큼 최종 방법 Java에서는 다음과 같이 사용됩니다. 비접근 한정자 에만 적용 가능 변하기 쉬운 , ㅏ 방법 , 또는 수업. 그것은 익숙하다 사용자를 제한하다 자바에서 .
다음은 다른 맥락 최종이 사용되는 곳 :
- 변하기 쉬운
- 방법
- 수업
Java에서 final 키워드의 특징:
Java에서 final 키워드는 변수, 메소드 또는 클래스를 수정하거나 확장할 수 없음을 나타내는 데 사용됩니다. 다음은 그 특징 중 일부입니다:
- 최종 변수: 변수가 final로 선언되면 초기화된 후에는 해당 값을 변경할 수 없습니다. 이는 수정해서는 안 되는 상수나 기타 값을 선언하는 데 유용합니다.
- 최종 방법 : 메서드가 final로 선언되면 하위 클래스에서 재정의할 수 없습니다. 이는 클래스의 공개 API의 일부이고 하위 클래스에서 수정해서는 안 되는 메서드에 유용합니다.
- 최종 수업: 클래스가 final로 선언되면 하위 클래스로 확장될 수 없습니다. 이는 있는 그대로 사용하고 수정하거나 확장해서는 안 되는 클래스에 유용합니다.
- 초기화: 최종 변수는 선언 시 또는 클래스 생성자에서 초기화되어야 합니다. 이렇게 하면 변수 값이 설정되고 변경할 수 없게 됩니다.
- 성능: 컴파일러가 변수나 메서드를 변경할 수 없다는 것을 알면 코드를 더 효과적으로 최적화할 수 있으므로 final을 사용하면 성능이 향상되는 경우가 있습니다.
- 보안: 최종 버전은 악성 코드가 중요한 데이터나 동작을 수정하는 것을 방지하여 보안을 강화하는 데 도움이 될 수 있습니다.
전반적으로 final 키워드는 코드 품질을 향상시키고 프로그램의 특정 측면을 수정하거나 확장할 수 없도록 하는 데 유용한 도구입니다. 변수, 메서드 및 클래스를 final로 선언함으로써 개발자는 보다 안전하고 강력하며 유지 관리가 가능한 코드를 작성할 수 있습니다.
자바 최종 변수
변수를 사용하여 변수를 선언하면 최종 키워드 , 그것은 값은 변경할 수 없습니다 , 본질적으로 끊임없는 . 이는 또한 당신이 최종 변수를 초기화해야 합니다 .
최종 변수가 다음과 같은 경우 참조 , 이는 변수가 될 수 없음을 의미합니다. 참조에 다시 바인딩됨 그러나 해당 참조 변수가 가리키는 객체의 내부 상태는 변경될 수 있습니다. 즉, 요소를 추가하거나 제거할 수 있습니다. 최종 배열 또는 최종 수집.
단어를 구분하기 위해 밑줄을 사용하여 최종 변수를 모두 대문자로 나타내는 것이 좋습니다.
예:
자바 public class ConstantExample { public static void main(String[] args) { // Define a constant variable PI final double PI = 3.14159; // Print the value of PI System.out.println('Value of PI: ' + PI); } }> 산출
Value of PI: 3.14159>
산출:
Value of PI: 3.14159>
최종 변수를 사용하는 다양한 방법
Java에서 최종 변수를 사용할 수 있는 다양한 방법을 살펴보겠습니다.
1. 최종 변수
예:
// Final variable final int THRESHOLD = 5;>
2. 빈 최종 변수
예:
// Blank final variable final int THRESHOLD;>
3. 정적 최종 변수
예:
// Final static variable PI static final double PI = 3.141592653589793;>
4. 정적 공백 최종 변수
예:
// Blank final static variable static final double PI;>
최종 변수 초기화
최종 변수를 초기화해야 합니다. 그렇지 않으면 컴파일러에서 컴파일 시간 오류가 발생합니다. 최종 변수는 다음 중 하나를 통해 한 번만 초기화될 수 있습니다. 초기화 또는 할당문. 최종 변수를 초기화하는 방법에는 세 가지가 있습니다.
오토캐드에서 3D
- 최종 변수가 선언되면 초기화할 수 있습니다. 이 접근 방식이 가장 일반적입니다. 최종 변수는 빈 최종 변수 그렇다면 ~ 아니다 선언하는 동안 초기화되었습니다. 다음은 빈 최종 변수를 초기화하는 두 가지 방법입니다.
- 빈 최종 변수는 내부에서 초기화될 수 있습니다. 인스턴스 초기화 블록 또는 생성자. 클래스에 생성자가 두 개 이상 있으면 모두 초기화해야 합니다. 그렇지 않으면 컴파일 타임 오류가 발생합니다.
- 빈 최종 정적 변수는 내부에서 초기화될 수 있습니다. 정적 블록 .
최종 변수를 초기화하는 두 가지 다른 방법을 살펴보겠습니다.
예:
자바 // Java Program to demonstrate Different // Ways of Initializing a final Variable // Main class class GFG { // a final variable // direct initialize final int THRESHOLD = 5; // a blank final variable final int CAPACITY; // another blank final variable final int MINIMUM; // a final static variable PI // direct initialize static final double PI = 3.141592653589793; // a blank final static variable static final double EULERCONSTANT; // instance initializer block for // initializing CAPACITY { CAPACITY = 25; } // static initializer block for // initializing EULERCONSTANT static{ EULERCONSTANT = 2.3; } // constructor for initializing MINIMUM // Note that if there are more than one // constructor, you must initialize MINIMUM // in them also public GFG() { MINIMUM = -1; } }>
위 코드에는 기본 메소드가 없었습니다. 이는 단순히 결론을 도출하기 위한 이해를 돕기 위한 예시 목적이었기 때문입니다.
관찰 1: 최종 변수는 언제 사용하나요?
일반 변수와 최종 변수의 유일한 차이점은 일반 변수에 값을 다시 할당할 수 있지만 할당된 최종 변수의 값은 변경할 수 없다는 것입니다. 따라서 최종 변수는 프로그램 실행 내내 일정하게 유지하려는 값에만 사용해야 합니다.
관찰 2: 참조 최종 변수.
최종 변수가 객체에 대한 참조인 경우 이 최종 변수를 참조 최종 변수 . 예를 들어, 최종 문자열 버퍼 변수는 아래에 다음과 같이 정의되어 있습니다.
final StringBuffer sb;>
우리 모두 알고 있듯이 최종 변수는 다시 할당할 수 없습니다. 그러나 참조 최종 변수의 경우 해당 참조 변수가 가리키는 객체의 내부 상태가 변경될 수 있습니다. 이는 재할당이 아니라는 점에 유의하세요.
이 속성은 결정적인 라고 비이행성 . 아래 예와 같이 객체의 내부 상태가 무엇을 의미하는지 이해하려면 다음과 같이 하십시오.
예시 1:
자바 // Java Program to demonstrate // Reference of Final Variable // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of StringBuilder class // Final reference variable final StringBuilder sb = new StringBuilder('Geeks'); // Printing the element in StringBuilder object System.out.println(sb); // changing internal state of object reference by // final reference variable sb sb.append('ForGeeks'); // Again printing the element in StringBuilder // object after appending above element in it System.out.println(sb); } }> 산출
Geeks GeeksForGeeks>
그만큼 비이행성 속성은 배열에도 적용됩니다. 배열 Java의 객체입니다. 다음과 같은 배열 최종 키워드 라고도 불린다 최종 배열 .
메모: 위에서 설명한 것처럼 최종 변수는 재할당할 수 없으며 그렇게 하면 컴파일 시간 오류가 발생합니다.
예시 2:
자바 // Java Program to Demonstrate Re-assigning // Final Variable will throw Compile-time Error // Main class class GFG { // Declaring and customly initializing // static final variable static final int CAPACITY = 4; // Main driver method public static void main(String args[]) { // Re-assigning final variable // will throw compile-time error CAPACITY = 5; } }> 산출:

기억하다: 메소드/생성자/블록 내부에서 최종 변수가 생성되면 이를 로컬 최종 변수라고 하며, 생성된 곳에서 한 번 초기화해야 합니다. 지역 최종 변수에 대해서는 아래 프로그램을 참조하세요.
예:
자바 // Java program to demonstrate // local final variable // Main class class GFG { // Main driver method public static void main(String args[]) { // Declaring local final variable final int i; // Now initializing it with integer value i = 20; // Printing the value on console System.out.println(i); } }> 산출
20>
다음과 같이 진행하기 전에 이러한 핵심 사항을 기억하십시오.
- C++의 차이점에 주목하세요. const 변수와 자바 결정적인 변수. C++의 const 변수는 다음과 같아야 합니다. 선언 시 값이 할당됨 . Java의 최종 변수의 경우 필요하지 않다 위의 예에서 볼 수 있듯이. 최종 변수에는 나중에 값을 할당할 수 있지만 한 번만 가능합니다.
- 결정적인 ~와 함께 foreach 루프 : for-each 문이 있는 최종 문은 법적 문입니다.
예:
자바 // Java Program to demonstrate Final // with for-each Statement // Main class class GFG { // Main driver method public static void main(String[] args) { // Declaring and initializing // custom integer array int arr[] = { 1, 2, 3 }; // final with for-each statement // legal statement for (final int i : arr) System.out.print(i + ' '); } }> 산출
1 2 3>
출력 설명: 이후 나 변수가 루프를 반복할 때마다 범위를 벗어나면 반복할 때마다 다시 선언되어 동일한 토큰(i)을 사용하여 여러 변수를 나타낼 수 있습니다.
예:
자바 public class Example { public static void main(String[] args) { final int VALUE = 10; // declaring a final variable System.out.println('The value is: ' + VALUE); // VALUE = 20; // uncommenting this line will cause a compiler error // System.out.println('The new value is: ' + VALUE); final String MESSAGE = 'Hello, world!'; // declaring a final variable System.out.println(MESSAGE); MyClass myObj = new MyClass(); myObj.printMessage(); myObj.printFinalMessage(); // MyOtherClass extends MyClass {} // uncommenting this line will cause a compiler error } } class MyClass { final String message = 'Hello!'; // declaring a final instance variable void printMessage() { System.out.println(message); } void printFinalMessage() { final String finalMessage = 'Hello, final!'; System.out.println(finalMessage); } } final class MyOtherClass { // declaring a final class // ... }> 산출
The value is: 10 Hello, world! Hello! Hello, final!>
자바 최종 클래스
클래스가 선언되면 결정적인 Java에서는 키워드를 a라고 합니다. 최종 수업 . 최종 수업은 할 수 없습니다. 확장(상속) .
최종 클래스에는 두 가지 용도가 있습니다.
사용법 1: 하나는 반드시 예방하는 것입니다. 계승 , 최종 클래스는 확장할 수 없기 때문입니다. 예를 들어, 모두 래퍼 클래스 좋다 정수 , 뜨다 등이 최종 수업입니다. 연장할 수 없습니다.
final class A { // methods and fields } // The following class is illegal class B extends A { // COMPILE-ERROR! Can't subclass A }>사용법 2: 클래스와 함께 final을 사용하는 또 다른 방법은 다음과 같습니다. 불변 클래스 생성 미리 정의된 것처럼 끈 수업. 클래스를 최종으로 만들지 않고서는 클래스를 불변으로 만들 수 없습니다.
자바 최종 방법
메소드가 선언된 경우 결정적인 키워드라고 합니다. 최종 방법 자바에서. 최종 방법은 다음과 같습니다. 재정의됨 .
그만큼 물체 클래스가 이 작업을 수행합니다. 클래스의 여러 메서드는 최종 메서드입니다. 모든 파생 클래스에서 동일한 구현을 따라야 하는 final 키워드를 사용하여 메서드를 선언해야 합니다.
삽화: 메소드가 포함된 최종 키워드
class A { final void m1() { System.out.println('This is a final method.'); } } class B extends A { void m1() { // Compile-error! We can not override System.out.println('Illegal!'); } }>Java에서 final 키워드의 장점:
Java의 final 키워드는 다음과 같은 여러 가지 이점을 제공합니다.
- 불변성 보장: 변수나 참조가 최종으로 표시되면 일단 할당되면 해당 값을 변경할 수 없습니다. 이는 데이터가 불변이고 실수로 또는 악의적으로 수정될 수 없도록 보장하는 데 도움이 됩니다.
- 성능 향상 : JVM(Java Virtual Machine)이 특정 값이나 참조를 변경할 수 없다는 것을 알면 코드를 더 효과적으로 최적화할 수 있으므로 final을 사용하면 성능을 향상시키는 데 도움이 될 수 있습니다.
- 코드를 이해하기 쉽게 만들기: 변수, 메서드 또는 클래스를 final로 선언함으로써 개발자는 코드를 더 쉽게 이해하고 추론할 수 있습니다. 값이나 참조가 최종으로 표시되면 변경되지 않음이 분명하므로 코드 분석 및 디버깅을 단순화할 수 있습니다.
- 코드 재사용 장려: 메서드를 최종으로 선언함으로써 개발자는 하위 클래스가 해당 메서드를 재정의하는 것을 방지할 수 있습니다. 하위 클래스는 상위 클래스의 메서드 구현을 사용해야 하므로 이는 코드 재사용을 촉진하고 중복을 줄이는 데 도움이 될 수 있습니다.
- 보안 강화: final을 사용하면 악성 코드가 중요한 데이터나 동작을 수정하는 것을 방지하여 보안을 강화하는 데 도움이 될 수 있습니다.
전반적으로 final 키워드는 코드 품질을 향상시키고 프로그램의 특정 측면이 수정되지 않도록 하는 데 유용한 도구입니다. 변수, 메서드 및 클래스를 final로 선언함으로써 개발자는 더욱 안전하고 강력하며 유지 관리 가능한 코드를 작성할 수 있습니다.
최종 메서드와 최종 클래스의 더 많은 예와 동작을 보려면 , 참조하세요 상속과 함께 final을 사용합니다. 다음을 참조하세요. 자바의 추상 차이점에 대한 기사 결정적인 그리고 추상적인 .
관련 면접 질문(중요): Java에서 final, finally 및 finalize의 차이점
결론
자바의 마지막 키워드는 사용자가 제한된 변수나 메소드, 클래스를 만드는 메소드이다. 이 튜토리얼에서는 Java의 최종 키워드를 자세히 다루고 모든 컨텍스트를 이해합니다.
예제에서는 Java 프로그램과 함께 컨텍스트를 설명하여 주제에 대한 완전한 이해를 제공합니다.
Java 최종 키워드 – FAQ
Java의 최종 메소드는 무엇입니까?
Java의 최종 메소드는 다음과 같이 선언된 메소드입니다. 최종 키워드 , 이는 해당 구현이 하위 클래스에 의해 재정의될 수 없음을 의미합니다.
최종 메소드가 상속되나요?
아니요, Java에서는 최종 메서드를 하위 클래스에서 상속할 수 없습니다. 이는 하위 클래스를 의미합니다. 최종 메서드를 재정의할 수 없습니다. .
Java의 final 키워드와 static 키워드는 무엇입니까?
최종 키워드: 변수, 메서드 또는 클래스를 수정할 수 없는 것으로 선언하는 데 사용됩니다.
정적 키워드: 개별 개체가 아닌 클래스 자체에 속하는 클래스 멤버(변수 및 메서드)를 선언하는 데 사용됩니다.
Java에서 문자열로 최종 키워드를 작성할 수 있나요?
예, final 키워드를 사용하여 변수를 선언하고 여기에 문자열 리터럴을 할당할 수 있습니다.
자바가 아닌 무작위