프로그래밍/JAVA
[JAVA] final
노력의천재
2020. 8. 10. 00:48
final 클래스
final이 클래스 앞에서 사용되면 클래스를 상속받을 수 없음을 지정
final class FinalClass { // 이 클래스는 상속 불가
....
}
class SubClass extends FinalClass { // 컴파일 오류 발생, FinalClass 상속 불가
....
}
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; // 상수 선언, 초기값 10으로 지정
void f() {
int[] intArray = new intArray[ROWS]; // 상수 활용
ROWS = 30; // 컴파일 오류, final 필드값은 변경할 수 없음
}
}
상수 필드는 한번 초기화되면 값을 변경할 수 없음
final 키워드를 public static과 함께 사용하면 프로그램 전체에서 사용할 수 있는 상수가 됨
class SharedClass {
public static final double PI = 3.14;
}
// SharedClass 내에서 사용할 때
double area = PI * radius * radius;
// 다른 클래스에서 사용할 때
double area = SharedClass.PI * radius * radius;
출처 : http://www.yes24.com/Product/Goods/61269276