final은 마지막 혹은 최종적이라는 의미를 가지고 있다. 최종적인 값이 되어서 더 이상 바꿀 수 없다는 것이다.
변수에 사용하면 변수를 상수화 하는 것이고, 함수에 사용하면 함수를 더 이상 override(재정의)할 수 없다.
또 클래스에 사용하게 되면 후손 클래스를 생성할 수 없게 된다.
int a = 3;
a = 5; //변수는 다른 값으로 대입 가능
final int b = 2;
//b = 4; 에러. final 변수는 다른 값으로 대입 불가능
//1)final 클래스 (종단 클래스)
final class Animal {}//class end
//class Elephant extends Animal {} 에러. final 클래스는 상속 받을 수 없다.
//2)final 메소드
class Fruit {
void view() {}
void disp() {}
}//class end
class Apple extends Fruit { //자식 클래스 extends 부모 클래스
}//class end
Fruit를 상속 받은 Apple 클래스는 Fruit에 있는 함수를 그대로 사용할 수 있다.
class Fruit {
void view() {}
final void disp() {}
}//class end
class Apple extends Fruit { //자식 클래스 extends 부모 클래스
@Override //<-annotation, 재정의(리폼)
void view() {}
/*
@Override
void disp() {} 에러. final 메소드는 더 이상 override 할 수 없다
*/
}//class end
또한, 부모 클래스에 있는 함수를 override하여 사용할 수도 있다. 하지만 final을 선언한 disp()는 override가 불가능하다.
'웹개발 교육 > Java' 카테고리의 다른 글
[33일] Java (27) - this() (0) | 2022.09.13 |
---|---|
[33일] Java (26) - 성적 프로그램 ox 표시하기 (0) | 2022.09.13 |
[33일] Java (24) - static (0) | 2022.09.13 |
[33일] Java (23) - this (0) | 2022.09.13 |
[32일] Java (22) - String 연습 문제 (0) | 2022.09.08 |