final
- final
- final 활용
1. final이란?
파이널이란 “더 이상 변경이 불가능”이란 의미를 가진다 필드(전역변수),메서드,클래스 에 부여 가능 필드에 가장 많이 사용되며 final이 붙은 필드는 수정이 불가능하다
class에도 final이 선언될 수 있으며 final class는 즉, 오버라이딩 불가 -> 부모클래스가 될수 없음을 의미한다 final이 붙은 메서드는 자식클래스에서 오버라이딩이 불가능하다 -> 즉, final과 abstract는 같이 사용할 수 없다
class Parent { // class 에 final 붙일수도 있음 // 즉, 클래스 수정이 불가능 -> 자식이 오버라이딩 못함 -> 부모클래스가 될수 없다
String field = "부모님꺼"; //여기에 final 붙이는 순간 자식에서도 변경 불가능 // final String field;
public void job() { // 여기에 final 붙이는 순간 자식에서도 변경 불가능 // 즉, 오버라이딩 안되게 막아버림 // 결국 final 과 abstract 같이 못쓴다
System.out.println("부모님께서 장만");
}
}
class Child extends Parent {
Child() {
field = "내꺼임";
}
public void job() {
System.out.println("물려받아 탕진");
}
}
//==============================================================================================
public class Test {
public static void main(String[] args) {
// final -
// final field - 값 변경 x
// final method - 오버라이딩 불가
// final class - 상속불가
Parent p = new Child();
System.out.println(p.field);
p.job();
}
}