양군의 행복한 이야기

final 의미 본문

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을 넣는경우가 있는데 잘 사용하진 않는다.

이경우 인자값으로 넘온값을 변경 하지 못한다.

인자값을 변경하는 코딩은 좋지 않은 방식이다.