java
final 의미
까망거북
2021. 9. 15. 17:07
1. 필드
final String msg = "abce";
or
final String msg = "";
public Sample(String _msg){
msg = _msg;
}
초기값이 변경되지 않는다.
초기 값을 줄수 있는 방법은 필드 선언시 주는 방법과 생성자를 통해서 주입한다.
보통 생성자 선언시 필수로 받기 위하여 사용한다.
2. 객체
class SampleClass{
String name = "가나다";
public void setName(String _name){
name = _name;
}
public String getName(){
return name;
}
}
public class FinalSample{
public static void main(String[] args){
final SampleClass sclass = new SampleClass();
sclass.setName("ABCE"); // 가능하다.
sclass = = new SampleClass(); // 불가능 하다.
}
}
객체를 선언시에 사용하면 다시 선언이 불가능 하다.
그러나 객체 내부의 변수는 변경이 가능하다.
3. 클래스
final class Sample{
String name = "ABCD";
}
// 상속 불가능
class SubSample extends Sample{
}
클래스에 final을 사용하면 상속이 불가능 하다. 최종 클래스가 된다.
필드의 값들은 setter를 사용하면 변경이 가능하다.
4. 메서드
class Sample{
String name = "ABCD";
public final void setting(){
name = "1234";
}
}
class SubSample extends Sample{
// 오버라이드 불가능
public void setting()
{
name = "!@#$";
}
}
메서드에 final 을 사용하면 오버라이드가 불가능 하다.
자식 클래스에서 부모의 클래스의 메서드를 변경 불가능 하도록 사용한다.
4. 메서드 인자값
public void setName(final String _name){
// 불가능 하다.
_name = "ABCD" ;
}
간혹 인자 값에 final을 넣는경우가 있는데 잘 사용하진 않는다.
이경우 인자값으로 넘온값을 변경 하지 못한다.
인자값을 변경하는 코딩은 좋지 않은 방식이다.