본문 바로가기

객체 지향 프로그래밍 - 클래스

final 필드와 상수

final 필드 선언

  • final 필드는 초기값이 저장되면 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없게 됨
  • final 필드에 초기값을 주려면 필드 선언 시에 초기값을 대입하거나 생성자에서 초기값을 대입


    출처, 이것이 자바다


package ch06.sec11.exam01;

/*
 * final 키워드를 적용하면, 초기값 이후 다른값으로 변경불가. 
 */

public class Korean {

    final String nation = "대한민국";
    final String ssn;

    String name;

    //ssn은 생성자를 통하여 초기값 사용.
    public Korean(String ssn, String name) {
        this.ssn = ssn;
        this.name = name; 
    }
}

package ch06.sec11.exam01;

public class KoreanExample {

    public static void main(String[] args) {

        Korean k1 = new Korean("123456-1234567", "홍길동");

        //필드값 출력
        System.out.println(k1.nation);
        System.out.println(k1.ssn);
        System.out.println(k1.name);

        //필드값 변경하기
//        k1.nation = "USA"; //final 필드이므로 값 변경불가.
//        k1.ssn = "123-12-1234"; //final 필드이므로 값 변경불가.

        k1.name = "이몽룡"; //final 필드가 아니어서 변경가능.
    }

}

상수 선언

  • 상수: 불변의 값을 저장하는 필드
  • 상수는 객체마다 저장할 필요가 없고, 여러 개의 값을 가져도 안 되기 때문에 static이면서 final


    출처, 이것이 자바다


package ch06.sec11.exam02;

/*
 * 상수선언 : 값이 불변인 것(영구적인 의미)을 이름으로 명칭을 사용
 * static final
 * 상수이름은 규칙이 아니지만, 대문자로 한다.
 */

public class Earth {

    //지구의 반지름 : 6400
    static final double EARTH_RADIUS = 6400;

    static final double EARTH_SURFACE_AREA;

    static {
        EARTH_SURFACE_AREA = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;
    }
}

package ch06.sec11.exam02;

public class EarthExample {

    public static void main(String[] args) {

        //상수 읽기가능, 변경 불가능.
        System.out.println("지구의 반지름: " + Earth.EARTH_RADIUS + "km");
        System.out.println("지구의 표면적: " + Earth.EARTH_SURFACE_AREA + "km^2");

    }

}

'객체 지향 프로그래밍 - 클래스' 카테고리의 다른 글

접근 제한자  (0) 2023.01.17
패키지  (0) 2023.01.17
정적 멤버  (0) 2023.01.16
인스턴스 멤버  (0) 2023.01.16
메소드 선언과 호출  (0) 2023.01.16