728x90
반응형
Final : 직관적으로 이해! 마지막이라는뜻 !
class에 Final을 붙여보자
//나는 내 멤버를 상속하지 않을것이다 (그러나 나는 받을래)
public final class First {
void show() {
System.out.println("First.....");
}
}
class에 final을 붙이면 ..
: 나는 내 멤버들을 넘겨주지않을거라는 뜻. 여기서 마지막이다.
※
그렇지만 부모의 멤버는 받을것이다 (약간 이기적)
메소드와 필드에도 final을 붙이면..
public class Test {
final int USER_NUM=100; //final 멤버변수도 처음에 만들때 초기화한다.
//static변수 or class변수라고도 한다
public static final int COUNT=10;
void aaa() {
//에러! NUM=50; 파이널 변수는 변경 불가능 !!
bbb(10);
}
void bbb(final int n) { //매개변수도 final가능 실수를
//에러 n=20; 받은 값을 그대로 쓸꺼야
System.out.println(n);
}
//메소드에도 final 키워드 가능!
final void show() { //오버라이드 불가
System.out.println("TEST");
} //이 메소드의 기능이 마지막이니 개선하지마라 개선이 안됨
// 오버라이드 하지못하는 메소드를 만들때...
}
상수에 final을 붙이면 값을 고정한다는 뜻이므로 나중에 대입연산자로 값을 넣으면 에러가 난다.
마찬가지로 메소드에도 final을 붙이면 오버라이드가 불가능하다.
※
우선순위 public> static > final
자바에서 final의 특이한점
final int b; //c언어 라면 원래 쓰레기값인데
b=50; //얘는 에러가 아니다. 쓰다 말았다고 생각함. final하면 고정시켰어야했는데 초기화안했으므로 바꿀수있다
//b=50; 이때는 에러! b=50으로 고정이 완료되었으니까
final했으면 초기화랑 같이해야 혼란이 없다.
728x90
반응형
'Java' 카테고리의 다른 글
Java Interface(인터페이스) (0) | 2023.02.05 |
---|---|
java abstract (0) | 2023.01.30 |
java 오버라이드(Override) (0) | 2023.01.29 |
java 상속 (Inheritance) (0) | 2023.01.29 |
Java_생성자 (0) | 2023.01.28 |