웹개발 교육/Java
[33일] Java (25) - final
ewok
2022. 9. 13. 14:59
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가 불가능하다.