final
final 키워드가 붙은 개체는 한 번 할당 된 후 (초기화 후) 변경할 수 없다.
① final 변수
해당 변수가 생성자나 대입연산자를 통해 한 번만 초기화 가능함
final String a = "안녕"; // final 을 통해 값을 초기화 시켜 주었다면
a = "잘가" // 값 변경은 할 수 없다. 이 문장은 컴파일 에러가 생긴다!!!!
② final arguments (인자) :
인자를 선언할 때 final 키워드를 사용할 수 있다.
→ final로 선언된 인자는 메소드 내에서 변경이 불가능
class finalTest {
public void test(final int number) { // final int number를 인자가 값으로 받겠다.
System.out.println(number);
// number = 1; // 컴파일 오류난다. 직접적으로 number 의 값을 지정 해서는 안된다.
}
}
public class 파이널 {
public static void main(String[] args) {
// TODO Auto-generated method stub
finalTest ft = new finalTest();
ft.test(5); //이렇게 따로 값을 지정 해주어야 한다.
}
}
③ final 메서드
해당 메소드를 오버라이드하거나 숨길 수 없음
class A {
final String hello = "안녕";
final String getHello() { //getHello 라는 final 메서드 생성
return hello;
}
}
class B extends A { //상속
@Override
String getHello() { // final 메서드인 getHello는 오버라이드 불가능
return "잘가";
}
}
④ final 클래스
상속 계층의 마지막이라 final 클래스는 상속할 수 없음
final class A {
final String hello;
A() {
hello = "안녕";
}
}
class B extends A() { // 컴파일 오류
}
'JAVA' 카테고리의 다른 글
[JAVA] 객체지향 - getter 와 setter (0) | 2023.02.28 |
---|---|
[JAVA] 객체지향 - 접근 제어자 (0) | 2023.02.28 |
[JAVA] 객체지향 - 초기화 블록 (0) | 2023.02.28 |
[JAVA] 객체지향 - static (0) | 2023.02.28 |
[JAVA] 객체지향 - this, this( ) (0) | 2023.02.28 |