본문 바로가기
Backend/JAVA

[JAVA] final

by howdyoon 2023. 3. 20.

final이 사용될 수 있는 곳 - 클래스, 메서드, 멤버변수, 지역변수

제어자 대상 의미
final 클래스 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다.
그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
메서드 변경될 수 없는 메서드,
final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다.
멤버변수 변수 앞에 final이 붙으면 값을 변경할 수 없는 상수가 된다.
지역변수
package oop0317;

import java.util.Calendar;

//1)final 클래스(종단클래스)
/*
final class Animal{}//class end
class Elephant extends Animal{} 에러. final클래스는 상속 받을 수 없다
*/

//2)final 메소드
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

public class Test01_final {

	public static void main(String[] args) {
		//final 마지막
		//변수  : 변수를 상수화
		//함수  : 더 이상 리폼(override 재정의)할 수 없다
		//클래스 : 종단클래스. 후손클래스를 생성할 수 없다
		
		int a=3;
		a=5;  //변수는 다른값으로 대입 가능
		
		final int b=2; //변수의 상수화
		//b=4; 에러. final변수는 다른값으로 대입 불가능
		
		System.out.println(Calendar.YEAR);   //1
		System.out.println(Calendar.MONTH);  //2
		System.out.println(Calendar.DATE);   //5
		
		System.out.println(Calendar.HOUR);	 //10
		System.out.println(Calendar.MINUTE); //12
		System.out.println(Calendar.SECOND); //13
		
		/*
		 	class Calendar{
		 		static final int TEAR=1;
		 		static final int MONTH=2;
		 		static final int DATE=5;
		 	}
		*/
		//Calendar.YEAR=3; 에러. final 변수값은 변경할 수 없다
		//Math.PI=3.15;    에러.
		
		
		
	}//main() end
}//class end

'Backend > JAVA' 카테고리의 다른 글

[JAVA] quiz : 성적프로그램 OX 표시하기  (0) 2023.03.20
[JAVA] wrapper  (0) 2023.03.20
[JAVA] static  (0) 2023.03.16
[JAVA] this와 this()  (0) 2023.03.16
[JAVA] String  (0) 2023.03.16