의문점 공부하기/📌 Java

📌 Java에서 final의 기능은 무엇인가?

아리빠 2023. 6. 2. 18:07

final은 3가지 용도로 사용된다

 

▶ final 클래스

final이 클래스 이름앞에 사용되면 클래스를 상속받을 수 없음을 지정한다. 

final class FinalClass{

 ......
 }
 class Subclass extends finalClass{ //컴파일 오류 발생

 .....
 }

-위 예시코드의 경우 FinalClass를 상속받아 Subclass를 만들 수 없다

 

 

 

▶ final 메소드

메소드 앞에 final이 붙으면 이 메소드는 더이상 오버라이딩 할 수 없음을 지정한다

자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속 받아 사용하도록 하고자 한다면 final로 지정하면 된다

Public class Superclass {
	protected final int finalMethod() {....}
}

class SubClass extends SupperClass { //Subclass가 SuperClass를 상속받음
	protected int finalMethod() {....} //컴파일 오류, finalMethod() 오버라이딩 할 수 없음
}

 

 

 

▶ final 필드 

 java에서 final로 필드를 선언하면 필드는 상수가 된다.

public class FinalFieldClass{
	final int Rows =10; // 상수 선언. 초기값(10) 지정
    void f() {
    	int[] intArray new int[Rows]; //상수 활용
        Rows = 30; //컴파일 오류, final로 선언된 필드값은 변경할 수 없다
        }
}

상수 필드는 한번 초기화되면 값을 변경할 수 없다.

final 키워드를 public static과 함께 선언하면, 프로그램 전체에서 공유할 수 있는 상수가 된다

𝝅를 모든 클래스에서 공유할 수 있는 상수로 선언하면 아래 코드와 같다 

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


-----------------------------------------------------
//다른 클래스에서는 클래스 이름으로 PI 사용 할 수 있다

double area = SharedClass.PI*radious*radious;