본문 바로가기
Java

자바 - 기타 제어자

by 청원뿔세포 2022. 5. 25.

 

final 제어자

  • 최종적인 값을 갖고 있는 필드 = 값을 변경할 수 없는 필드
public class Person{
    final String nation = "Korea";
    final String ssn; //아래에있는 메소드가 없어지면 오류발생
    String name;

    public Person(String ssn, String name){
        // 아래 두줄은 위에 nation을 선언해준것과 같은 기능을 해준다.
        this.ssn = ssn;
        this.name = name;
    }
}
  • 생성자는 final 필드의 최종 초기화를 마쳐야 하는데, 만약 초기화되지 않은 final 필드를 그대로 남겨두면 컴파일 에러가 발생한다.
  • final 필드의 초기값을 줄 수 있는 방법 2가지
    • 필드 선언시에 주는 것이 제일 간단
    • 생성자로 선언해주는 방법 ( 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부 데이터로 초기화해야 한다면 생성자에서 초기값을 지정해줘야 한다.)
class Name{
    static void print() { //클래스 메소드
    System.out.println("내 이름은 홍길동입니다.");
    }

    void print2() { //인스턴스 메소드
    System.out.println("내 이름은 이순신입니다.");
    }
}

public class Static_ex {

    public static void main(String[] args) {
        Name.print(); //인스턴스를 생성하지 않아도 호출이 가능

        Name name = new Name(); //인스턴스 생성
        name.print2(); //인스턴스를 생성하여야만 호출이 가능
    }
}

상수

  • 불변의 값 상수는 객체마다 저장할 필요가 없는 고용성을 띠고 있으며 여러가지 값으로 초기화될 수 없다.
  • final 필드는 객체마다 저장되고, 생성자의 매개값을 통해서 여러가지 값을 가질 수 있기때문에 상수가 될 수 없다.
  • static final
public class Earth{
    static final double EARTH_RADIUS=6400;
    static final double EARTH_SURFACE_AREA;

    static{ //static에서 선언
        EARTH_SURFACE_AREA = 4 * Math.PI * EARTH_RADIUS * EARTH_RADIUS;
    }
}

'Java' 카테고리의 다른 글

상속  (0) 2022.10.19
자바 - 오버로딩 vs 오버라이딩  (0) 2022.06.10
자바 - 메소드 오버로딩  (0) 2022.05.24
자바 - 기본 생성자  (0) 2022.05.17
자바 - 클래스 기본 예제 (1)  (0) 2022.04.01

댓글