웹개발 교육/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가 불가능하다.