본문 바로가기
Java

java Final

by 히예네 2023. 1. 29.
728x90
반응형

Final : 직관적으로 이해!  마지막이라는뜻 ! 


class에 Final을 붙여보자

 

//나는 내 멤버를 상속하지 않을것이다 (그러나 나는 받을래) 
public final class First {
	
	void show() {
		System.out.println("First.....");
	}

}

class에 final을 붙이면 ..

: 나는 내 멤버들을 넘겨주지않을거라는 뜻. 여기서 마지막이다. 

 

그렇지만 부모의 멤버는 받을것이다 (약간 이기적) 

 


 

메소드와 필드에도 final을 붙이면..

public class Test {

	final int USER_NUM=100; //final 멤버변수도 처음에 만들때 초기화한다. 
	
	
	//static변수 or class변수라고도 한다
	public static final int COUNT=10; 
	
	void aaa() {
		//에러! NUM=50; 파이널 변수는 변경 불가능 !!
	bbb(10);
	}
	
	
	void bbb(final int n) { //매개변수도 final가능  실수를 
		//에러 n=20; 받은 값을 그대로 쓸꺼야 
		System.out.println(n);
	}
	
	//메소드에도 final 키워드 가능!
	final void show() { //오버라이드 불가
		System.out.println("TEST");
	} //이 메소드의 기능이 마지막이니 개선하지마라 개선이 안됨
	// 오버라이드 하지못하는 메소드를 만들때...
	
	
	
	
	
	
	
	
}

상수에 final을 붙이면 값을 고정한다는 뜻이므로 나중에 대입연산자로 값을 넣으면 에러가 난다.

마찬가지로 메소드에도 final을 붙이면 오버라이드가 불가능하다.  

 

 

※ 

우선순위 public> static > final 


자바에서 final의 특이한점

final int b; //c언어 라면 원래 쓰레기값인데
b=50; //얘는 에러가 아니다. 쓰다 말았다고 생각함. final하면 고정시켰어야했는데 초기화안했으므로 바꿀수있다

//b=50; 이때는 에러! b=50으로 고정이 완료되었으니까

final했으면 초기화랑 같이해야 혼란이 없다.

728x90
반응형

'Java' 카테고리의 다른 글

Java Interface(인터페이스)  (0) 2023.02.05
java abstract  (0) 2023.01.30
java 오버라이드(Override)  (0) 2023.01.29
java 상속 (Inheritance)  (0) 2023.01.29
Java_생성자  (0) 2023.01.28