자바에서 final은 변수, 메소드, 클래스 등에 적용되어 특정한 의미와 제약을 부여합니다. final로 선언된 요소는 더 이상 변경할 수 없으며, 여러 컨텍스트에서 사용됩니다.
자바에서의 final 키워드는 변수, 메소드, 또는 클래스에 적용될 수 있는 한정자로, 해당 요소에 대한 변경을 허용하지 않음을 나타냅니다.
final int MAX_VALUE = 100;
Javapublic class Parent {
final void printMessage() {
System.out.println("This is a final method.");
}
}
public class Child extends Parent {
// 아래의 코드는 오류를 발생시킵니다.
// void printMessage() { // 오버라이드 시도
// System.out.println("Trying to override the final method.");
// }
}
Javafinal class FinalClass {
// 클래스 내용
}
// 아래의 코드는 오류를 발생시킵니다.
// class SubClass extends FinalClass { // 상속 시도
// // 하위 클래스 내용
// }
Javafinal MyClass myObject = new MyClass();
// myObject = new MyClass(); // 오류 발생! final 참조 변수는 재할당이 불가능합니다.
Javafinal StringBuilder stringBuilder = new StringBuilder("Hello");
stringBuilder.append(", World!"); // 내부 상태 변경 가능
Java✔️final 키워드를 사용하면 프로그램의 일관성을 유지하고 버그를 방지하며, 코드의 안정성을 높이는 데 도움이 됩니다.
static final은 자바에서 사용되는 키워드의 조합으로, 클래스 레벨에서 사용되는 상수를 나타냅니다. 이는 해당 필드가 클래스의 인스턴스가 아닌 클래스 자체에 속한다는 것을 의미하며, 값이 한 번 할당되면 변경할 수 없는 상수임을 나타냅니다. 상수명은 모두 대문자로 나타냅니다.
public class Constants {
public static final double PI = 3.14;
public static final int MAX_VALUE = 100;
}
JavaConstants.PI = 3.14159; // 오류 발생! static final 필드는 재할당이 불가능합니다.
Javapublic class MathConstants {
public static final double PI = 3.14;
public static final double E = 2.71828;
public static final int MAX_ITERATIONS = 1000;
}
Java✔️위의 예시에서 PI, E, MAX_ITERATIONS는 상수로 사용되며, 다른 클래스에서 해당 클래스를 import하여 사용할 수 있습니다. 상수 값은 변경되지 않고 고정되어 있어야 하므로, static final을 사용하여 정의합니다.
자바에서의 final 키워드는 변수, 메소드, 클래스에 적용되어 다양한 의미를 부여합니다. final로 선언된 변수는 한 번만 초기화되고 그 이후에는 값을 변경할 수 없습니다. 이는 변수가 한 번 초기화되면 그 값을 변경할 수 없도록 고정되어, 상수의 특성을 가지게 됩니다.
메소드에 final을 사용하면 해당 메소드는 하위 클래스에서 오버라이드할 수 없어, 메소드의 구현이 최종적이라는 의미를 전달합니다. 마찬가지로, final로 선언된 클래스는 상속이 불가능하므로, 해당 클래스의 특성이 변하지 않아야 함을 나타냅니다.
또한, final 참조 변수는 한 번만 초기화되고 그 이후에는 값을 변경할 수 없습니다. 그러나 final 변수가 참조하는 객체의 내부 상태는 변경될 수 있습니다. 이는 final 변수가 값을 가지고 있는 것이 아니라 주소를 가리키고 있어서, 그 주소가 가리키는 객체의 내부 상태에는 영향을 주지 않기 때문입니다.
이렇게 final 키워드는 프로그램의 안정성과 일관성을 높이는 데 도움을 주며, 상수, 메소드, 클래스, 참조 변수 등 다양한 요소에 적용되어 사용됩니다.
소개 자바에서 Set은 중복을 허용하지 않는 데이터 집합을 의미합니다. List와 달리 동일한 요소를 여러 번…
해시(Hash)란 무엇인가? 해시(Hash)는 자바 프로그래밍에서 빠르고 효율적인 데이터 저장 및 검색을 위한 핵심적인 개념입니다. 이…
LinkedList란 무엇인가? LinkedList는 자바에서 유용하게 사용되는 자료구조 중 하나로, 연결 리스트 방식을 이용하여 데이터를 관리하는…
ArrayList란 무엇인가? ArrayList는 자바에서 가장 널리 사용되는 컬렉션 중 하나로, 가변 크기의 배열을 구현한 클래스입니다.…
제네릭(Generic)이란? 자바 제네릭은 코드의 재사용성을 높이고 타입 안전성을 보장하는 중요한 개념입니다. 이 블로그 글에서는 자바…