본문 바로가기
Back-End/Java

[Java] final 지정자

by 찐코딩 2021. 8. 18.

final 지정자

- 클래스나 멤버변수, 멤버메서드에 적용해서 사용함.

 

final + 클래스

변경할 수 없는 클래스, 확장될 수 없는 클래스
- final로 지정된 클래스는 다른 클래스의 조상클래스가 될 수 없음. 


final + 멤버메서드

- 변경될 수 없는 메서드.
- final로 지정된 메서드는 오버라이딩을 통해 재정의를 할 수 없음.


final  + 멤버 변수

- 변수명앞에 final 이라는 키워드가 붙으면, 값을 변경할 수 없음.   ==> 상수가 된다.
  대표적인 final 클래스는 String 클래스의 Math 클래스가 있음.  

 


package finals;

class AA {
	final int su = 150; 	// 상수로 인식 -> 값 변경 안됨
	
	final void output() {
		System.out.println("final output() 메소드 호출");
	}
}


class BB extends AA {
	// 상수로 인식되기 떄문에 값 변경이 안됨
	// su = 250;   ==> error 발생
	
	// final로 지정된 메소드는 오버라이딩을 통해서 재정의를 할 수 없음
	// @Override
	// void output() {
	// 		System.out.println("output() 메소드 재정의");
	// }  ==> error 발생
}

final class cc {
}

// final로 지정된 클래스는 다른 클래스의 조상(부모클래스)이 될 수 없음
// class DD extends CC {}   => error 발생

public class Ex01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
	}

}

결과값을 보는 게 의미 없는 코드이기때문에 결과창은 첨부하지 않는다.(주석이 중요)

댓글