final
final 클래스
final이 클래스 이름 앞에 사용되면 클래스를 상속받을 수 없음을 지정합니다.
final class FinalClass { // 이 클래스는 상속 불가
.....
]
class Subclass extends FinalClass { // 컴파일 오류 발생. FinalClass 상속 불가
.....
}
final 메소드
final로 메소드로 선언하면 오버라이딩할 수 없는 메소드임을 선언합니다.
자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속받아 사용하도록 하고자 한다면 다음과 같이 final로 지정하면 됩니다.
public class SuperClass {
protected final int finalMethod() { ... } // finalMethod()는 자식이 오바라이딩 불가
}
class SubClass extends SuperClass { // SubClass가 SuperClass 상속
protected int finalMethod() { ... } // 컴파일 오류. finalMethod() 오버라이딩 안됨
}
final 필드
final로 필드를 선언하면 필드는 상수가 됩니다.
public class FinalFieldClass {
final int ROWS = 10;
void f() {
int[] intArray = new int[ROWS]; // 상수 활용
ROWS = 30; // 컴파일 오류, final 필드 값은 변경할 수 없다.
}
}
상수 필드는 한 번 초기화되면 값을 변경할 수 없습니다. final 키워드를 public static과 함께 선언하면, 프로그램 전체에서 사용할 수 있는 상수가 됩니다.
class SharedClass {
public static final double PI = 3.14;
}
SharedClass 내에서는 다음과 같이 그냥 PI로 사용되지만,
double area = PI * radius * radius;
다른 클래스에서는 다음과 같이 사용하면 됩니다.
double area = SharedClass.PI * radius * radius;
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
| 클래스 상속과 객체 (1) | 2025.02.06 |
|---|---|
| 상속 (0) | 2025.02.06 |
| static 멤버 (1) | 2025.02.04 |
| 접근 지정자 (0) | 2025.02.03 |
| 객체의 소멸과 가비지 컬렉션 (0) | 2025.02.02 |