final

기록하는 용도·2022년 8월 10일
0

final

field 중 constant(상수), method, class에서 명시할 수 있는 제어자

1) constant(상수) : 재할당 불가

private final String MY_ID = "javaking";
MY_ID = "angel"; // -> error 재할당 불가

2) method : 자식 클래스에서 메소드 오버라이딩 불가

public final void wait(){ } //이 메소드는 자식에서 재정의 불가

3) class : subclassing 불가, final class는 상속 불가

예제1)

class FinalExam{
	final int MY_NUMBER = 1;
	void test() {
//		MY_NUMBER = 2; 
	}
	public final void test2() { 
	}
}

final class Parent{} 
 
//class Child extends Parent{}

public class TestFinal extends FinalExam{
//	public void test2() {} 
	
}
final int MY_NUMBER = 1;

final을 명시해서 재할당 불가하게 한다.

void test() {
//		MY_NUMBER = 2; 
	}

MY_NUMBER는 final 상수이므로 재할당이 불가하다.

	public final void test2() { 
	}

메소드에 final 제어자를 명시했기때문에 자식 클래스에서 오버라이딩 불가하다.

final class Parent{} 

final class를 명시하면 상속 될 수 없다.

//class Child extends Parent{}

-> final class은 Parent를 상속받을 수 없다.

public class TestFinal extends FinalExam{
//	public void test2() {} 
	
}

-> final method는 오버라이딩 할 수 없다.

0개의 댓글