본문 바로가기
java/개념

final

by unhyepnhj 2024. 5. 20.

final 클래스: 클래스 이름 앞에 final을 사용하면 클래스를 상속받을 수 없음

final class FinalClass{			//이 클래스는 상속 불가
	...
}
class SubClass extends FinalClass{	//상속 불가, 컴파일 오류
	...
}

 

final 메소드: final로 메소드를 선언하면 오버라이딩할 수 없음

public class SuperClass{
	protected final int finalMethod(){...}
    //finalMethod()는 자식 클래스에서 오버라이딩 불가
}
class Subclass extends SuperClass{
	protected int finalMethod(){...}	//오버라이딩 불가, 컴파일 오류
}

- 자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속받아 사용하게 할 때

 

final 필드: final로 필드를 선언하면 필드는 상수가 됨

public class FinalFieldClass{
	final int ROWS = 10;	//상수 선언, 초기화해야 됨
    void f(){
    	int[] intArray = new int[ROWS];
        ROWS = 30;		//final 필드 변경 불가, 컴파일 오류
    }
}

- 상수 필드는 선언 시 초기값을 지정

- 상수 필드는 실행 중 값 변경 불가

class SharedClass{
	pulic static final double PI = 3.14;
}

- final 키워드를 public static과 함께 선언하면 프로그램 전체에서 사용 가능한 상수가 됨

double area = PI*radius*radius;

- SharedClass 내에서는 그냥 PI로 사용

double area = SharedClass.PI*radius*radius;

- 다른 클래스는 클래스로 접근하여 사용

'java > 개념' 카테고리의 다른 글

상속과 접근지정자  (0) 2024.05.21
상속  (0) 2024.05.21
static  (0) 2024.05.20
접근 지정자  (0) 2024.05.20
객체 소멸과 가비지 컬렉션  (0) 2024.05.20