JAVA

java_fianl_22.06.09(day13)

양빵빵 2022. 6. 9. 14:26

 

 

 

 

 

package day12.final_;

public class Korean {

    String name; // 이름

    // 생성자 클래스 안에서도 변경하지 못하게 하고 싶다.
    final String id; // 주민번호 -> id는 생성자에서 초기화 된다.
    public static final String nation ; //(final로 설정된 nation필드는 상수 인가?!)
    static {
        nation = "대한민국";
    }
    // 상수 : 불변성과 유일성을 모두 만족
    // final을 붙이면 불변성은 만족 시킨다.
    // 유일성을 만족 시키려면 static과 final을 붙여야 한다.

    // 국적 -> 불변의 값으로 만들고자 final을 썼으면 불변의 값이 된 값이 초기화 되어 있어야 한다.
    // 초기화 시키면 final로 변경을 못하게 할수 있다.

    public Korean(String name, String id) {
        this.name = name;
        this.id = id;
//        this.nation = nation;
    }
    // 생성자에서 우회 하면 된다고 하는데 실습할때 안됨 ㅠ
    // 필드에서 초기화를 해놔서 안되는거 였네;

    public void changeId(String id) {
//        this.id = id;
        // 내부에서도 주민번호 변경이 안된다.
    }

    // 유일성 확인
    @Override
    public String toString() {
        return "이름: " + name + ", 주민번호: " + id + ", 국적 : " + nation;
    }
}

 

package day12.final_;

public class Main {
    public static void main(String[] args) {

        Korean park = new Korean("박철수","991111-11223344");

        Korean kim = new Korean("김영희","880202-2233441");
        Korean kim2 = new Korean("홍길동","880202-2233441");
        Korean kim3 = new Korean("고길동","880202-2233441");

        park.name = "박찬호";
        // 주민번호는 처음에 결정되면 절대 못바꾸게 하고 싶다.! 생성자 클래스에 id 필드 private
//        kim.id = "880202-29999911";

//        kim.nation = "중국"; // fianl에 의한 불변성으로 변경 불가능


       System.out.println(park);
        System.out.println(kim);
        System.out.println(kim2);
        System.out.println(kim3);

        // 유일성을 만족한 듯 하지만..

    }



}