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;
'의문점 공부하기 > 📌 Java' 카테고리의 다른 글
📌 자바에서 문자열을 조작하는 클래스는 무엇이 있을까? 각 클래스의 차이점은? (0) | 2023.06.07 |
---|---|
📌 자바에서 Math.round(-1.5)는 무엇을 의미할까? (0) | 2023.06.05 |
📌 두 객체가 동일한 hashCode를 가지면 Equals()가 참이어야 한다?! (0) | 2023.06.01 |
📌 ==와 equals의 차이점은 무엇일까? (2) | 2023.05.31 |
📌 JDK와 JRE의 차이점은 뭘까? (0) | 2023.05.30 |