Final = 변경 금지의 규제
final 클래스는 상속이 안됨
final 메서드는 재정의가 안됨
final 변수는 값을 변경할 수 없음
final 클래스의 대표적인예 = String 클래스
사용자가 임의로 String클래스를 상속받아 재정의하는것을 방지하기 위함이다
final 변수는 값을 할당하면 그 값을 변경할 수 없다.
final 변수는 선언할때 초기화하거나 생성자를 초기화하는 방법이 있다.
둘중 하나도 하지않으명 컴파일에러가 발생한다.
final메서드는 오버라이딩은 못해도 상속은 된다.
final은 상수가 아니다 => 고정된값은 아니지만 변경이 불가할뿐
상수 = static final
자바에선 불변의 값을 저장하는 필드를 상수라고 부름
static과 final이 동시에 붙으면 상수
상수이름은 모두 대문자로 작성하고 연결된 단어는 _로 연결하는것과 맨앞에 public을 붙혀주는것이 관례
ex =>
public static final long VERSION = 1L;
package day09.final_.field;
public class MainClass {
public static void main(String[] args) {
Person hong = new Person("123123-123123","홍길동");
// hong.nation = "아메리카"; //값의 변경 금지
// hong.ssn = "3333333"; //값의 변경 금지
Person park = new Person("222222-222222","박찬호");
System.out.println(hong.ssn);
System.out.println(park.ssn);
/////////////////////////////////////////////////////
//상수의 사용
System.out.println(Constant.PI);
System.out.println(Constant.EARTH_RADIUS);
System.out.println(Constant.O2);
System.out.println(Math.PI);
System.out.println(Math.E);
}
}
package day09.final_.field;
public class Constant {
public static final double PI = 3.1415; //final이 붙은 변수는 초기값 설정이 필수.
public static final long EARTH_RADIUS = 6371L; // 이어지는 이름은_를 추가해서 연결해줌.
public static final int O2 = 32;
}
package day09.final_.field;
public class Person {
/*
* final변수는 값을 변경할 수 없기 때문에
* 직접 초기값을 지정하거나 or 생성자를 통해서 초기화를 해야합니다.
*/
public final String nation = "대한민국";
public final String ssn;
public String name;
public Person(String ssn, String name) {
this.ssn = ssn;
this.name = name;
}
}
'JAVA > 코드' 카테고리의 다른 글
2022_10_13 연습 08 Quiz13 추상클래스 응용 (0) | 2022.10.13 |
---|---|
2022_10_13 연습 07 day09.abs.good 추상클래스&추상메서드 (0) | 2022.10.13 |
2022_10_13 연습 05 day09.final_.method (0) | 2022.10.13 |
2022_10_13 연습 04 day08.static_.singleton (0) | 2022.10.13 |
2022_10_13 연습 03 day08.static_.method (0) | 2022.10.13 |
댓글