logo

Java의 최종 키워드

그만큼 최종 방법 Java에서는 다음과 같이 사용됩니다. 비접근 한정자 에만 적용 가능 변하기 쉬운 , ㅏ 방법 , 또는 수업. 그것은 익숙하다 사용자를 제한하다 자바에서 .

다음은 다른 맥락 최종이 사용되는 곳 :

  1. 변하기 쉬운
  2. 방법
  3. 수업



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
  1. 최종 변수가 선언되면 초기화할 수 있습니다. 이 접근 방식이 가장 일반적입니다. 최종 변수는 빈 최종 변수 그렇다면 ~ 아니다 선언하는 동안 초기화되었습니다. 다음은 빈 최종 변수를 초기화하는 두 가지 방법입니다.
  2. 빈 최종 변수는 내부에서 초기화될 수 있습니다. 인스턴스 초기화 블록 또는 생성자. 클래스에 생성자가 두 개 이상 있으면 모두 초기화해야 합니다. 그렇지 않으면 컴파일 타임 오류가 발생합니다.
  3. 빈 최종 정적 변수는 내부에서 초기화될 수 있습니다. 정적 블록 .

최종 변수를 초기화하는 두 가지 다른 방법을 살펴보겠습니다.

예:

자바
// 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>

다음과 같이 진행하기 전에 이러한 핵심 사항을 기억하십시오.

  1. C++의 차이점에 주목하세요. const 변수와 자바 결정적인 변수. C++의 const 변수는 다음과 같아야 합니다. 선언 시 값이 할당됨 . Java의 최종 변수의 경우 필요하지 않다 위의 예에서 볼 수 있듯이. 최종 변수에는 나중에 값을 할당할 수 있지만 한 번만 가능합니다.
  2. 결정적인 ~와 함께 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 키워드를 사용하여 변수를 선언하고 여기에 문자열 리터럴을 할당할 수 있습니다.

자바가 아닌 무작위