프로그래밍 언어/JAVA

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