JAVA/코드

2022_10_13 연습 06 day09.final_.field

0304호 2022. 10. 13.

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;
	}
}

댓글