English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java의 final 키워드를 깊이 이해하다

 java final 키워드 상세 설명:

서론:

final은 Java에서 매우 중요한 키워드로, 클래스, 메서드 및 변수에 적용될 수 있습니다. 이 기사에서는 final 키워드가 무엇인지, 변수, 메서드 및 클래스를 final로 선언하는 것이 무엇을 의미하는지, final을 사용하는 장점이 무엇인지, 그리고 final 키워드의 사용 예제를 살펴보겠습니다. final은 자주 static과 함께 사용되어 상수를 선언하며, final이 응용 프로그램 성능을 개선하는 방법도 볼 수 있습니다.

final 키워드의 의미63;

final은 Java에서는 예약된 키워드로, 멤버 변수, 메서드, 클래스 및 로컬 변수를 선언할 수 있습니다. 참조를 final로 선언하면 이 참조를 변경할 수 없습니다. 컴파일러는 코드를 검사하며, 변수를 다시 초기화하려고 시도하면 컴파일러가 컴파일 오류를 보여줍니다.

final 변수는 무엇인가요?

모든 멤버 변수나 로컬 변수(메서드 내나 코드 블록 내의 변수는 로컬 변수라고 합니다)가 final로 선언된 경우 final 변수라고 합니다. final 변수는 자주 static 키워드와 함께 사용되어 상수로 사용됩니다. 다음은 final 변수의 예입니다:

public static final String LOAN = "loan";
LOAN = new String("loan") //invalid compilation error

final 변수는 읽기 전용입니다.

final 변수는 읽기 전용입니다.63;

final을 사용하여 메서드를 선언할 수 있습니다. 메서드 앞에 final 키워드를 추가하면 이 메서드가 자식 클래스의 메서드에 의해 재정의될 수 없습니다. 자식 클래스에서 메서드의 기능이 충분히 완전하다고 생각되고, 변경할 필요가 없다면 이 메서드를 final로 선언할 수 있습니다. final 메서드는 비final 메서드보다 빠르며, 컴파일 시에만 정적 바인딩이 되어 있어, 실행 시에 다시 동적 바인딩이 필요하지 않습니다. 다음은 final 메서드의 예입니다:

class PersonalLoan{
  public final String getName(){
    return "personal loan";
  }
}
class CheapPersonalLoan extends PersonalLoan{
  @Override
  public final String getName(){
    return "cheap personal loan"; //컴파일 오류: final 메서드를 상속할 수 없습니다.
  }
}

final 클래스는 무엇인가요?

final 키워드로修饰된 클래스는 final 클래스라고 합니다. final 클래스는 일반적으로 완전한 기능을 가지며, 상속할 수 없습니다. Java에는 String, Interger 및 기타 패키지 클래스와 같은 많은 final 클래스가 있습니다. 다음은 final 클래스의 예입니다:

 final class PersonalLoan{
  }
  class CheapPersonalLoan extends PersonalLoan{ //컴파일 오류: final 클래스에서는 상속할 수 없습니다.
}

  final 키워드의 장점

final 키워드 사용의 장점을 요약합니다.

  1. final 키워드는 성능을 향상시킵니다. JVM과 Java 애플리케이션은 final 변수를 캐시합니다.
  2. final 변수는 추가적인 동기화 비용 없이 안전하게 다중 스레드 환경에서 공유할 수 있습니다.
  3. final 키워드를 사용하면 JVM이 메서드, 변수 및 클래스를 최적화합니다.

불변 클래스

불변 클래스를 생성하려면 final 키워드를 사용해야 합니다. 불변 클래스는 생성된 후 변경될 수 없는 객체를 의미합니다. String은 불변 클래스의 대표입니다. 불변 클래스는 많은 장점이 있습니다. 예를 들어, 객체는 읽기 전용이며, 다중 스레드 환경에서 안전하게 공유할 수 있으며, 추가적인 동기화 비용이 필요하지 않습니다.

final에 대한 중요한 포인트

  1. final 키워드는 멤버 변수, 로컬 변수, 메서드 및 클래스에 사용될 수 있습니다.
  2. final 멤버 변수는 선언 시 초기화되거나 생성자에서 초기화되어야 하지 않으면 컴파일 오류가 발생합니다.
  3. final 변수에 대해 다시 할당할 수 없습니다.
  4. 로컬 변수는 선언 시 값이 할당되어야 합니다.
  5. 匿名 클래스에서 모든 변수는 final 변수여야 합니다.
  6. final 메서드는 재정의될 수 없습니다.
  7. final 클래스는 상속될 수 없습니다.
  8. final 키워드는 finally 키워드와 다릅니다. finally 키워드는 예외 처리에 사용됩니다.
  9. final 키워드는 finalize() 메서드와 혼동하기 쉽습니다. 이는 Object 클래스에서 정의된 메서드로, JVM가 가비지 수집 전에 호출됩니다.
  10. 인터페이스에서 선언된 모든 변수는 자동으로 final입니다.
  11. final과 abstract라는 두 가지 키워드는 상호 배제적입니다. final 클래스는 abstract일 수 없습니다.
  12. final 메서드는 컴파일 단계에서 바인딩되며, 이를 static binding이라고 합니다.
  13. 선언 시 초기화되지 않은 final 변수는 빈 final 변수(blank final variable)라고 불립니다. 이들은 생성자에서 초기화되거나 this()를 호출하여 초기화해야 합니다. 이렇지 않으면 컴파일러는 "final 변수(변수 이름)는 초기화되어야 합니다"라는 오류를 발생시킵니다.
  14. 클래스, 메서드, 변수를 final로 선언하면 성능을 향상시킬 수 있습니다. 이렇게 하면 JVM가 추정하고 최적화할 수 있습니다.
  15. Java 코드의 관습에 따르면, final 변수는 상수로 간주되며, 일반적으로 상수 이름은 대문자로 작성됩니다:
private final int COUNT = 10;

집합 객체를 final로 선언하는 것은 참조가 변경되지 않는다는 것을 의미합니다. 그러나 그 안에 추가, 제거 또는 내용을 변경할 수 있습니다. 예를 들어:

private final List Loans = new ArrayList();
list.add(“home loan”); //유효
list.add("personal loan"); //유효
loans = new Vector(); //유효하지 않음

우리는 final 변수, final 메서드 및 final 클래스가 무엇인지 알고 있습니다. 필요할 때 final을 사용하면 더 빠르고 더 나은 코드를 작성할 수 있습니다.

 읽어주셔서 감사합니다. 많은 도움이 되길 바랍니다. 감사합니다. 이 사이트에 대한 지원에 감사합니다!

좋아하는 것