Luver Duck 2022. 8. 9. 20:43

static(클래스의, 공통적인)

클래스 변수 (static 멤버 변수)

- 클래스 변수는 인스턴스를 생성하지 않아도 사용 가능 (static 영역에서 관리됨)

- 모든 인스턴스에 공통적으로 사용할 수 있으며 일괄 관리된다

 

클래스 메소드 (static 메소드)

- 클래스 메소드는 인스턴스를 생성하지 않아도 호출 가능 (static 영역에서 관리됨)

- 클래스 메소드 내에서는 인스턴스 멤버들을 직접 사용할 수 없다

 

static 전용 초기화 구문

- 클래스 변수(static 멤버 변수)는 생성자로 초기화하지 않는다

static {
	클래스 변수 초기화;
}

 

final(마지막의, 변경될 수 없는)

final 클래스

- 다른 클래스에 상속을 할 수 없는 클래스 (다른 클래스의 슈퍼 클래스가 될 수 없다)

 

final 멤버 변수, final 지역 변수

- 변경할 수 없는 상수가 된다

- public static final 은 상수를 만드는 키워드가 된다

 

final 메소드

- 오버라이딩(재정의)될 수 없는 메소드 (상속 시 메소드 오버라이딩(재정의)를 금지할 수 있다)

 

상수의 선언과 상수 호출

- 상수명은 모두 대문자로 한다

import java.util.Random;

public class Test

// 상수 선언 (앞은 숫자 0, 뒤는 숫자 1로 정한다)
public static final int FRONT = 0, BACK = 1;

// 메인 메소드에서 상수 호출
public static void main(String[] args) {

	Random r = new Random();

	int coin = r.nextInt(2);	// 동전 던지기(난수)

	if(coin == FRONT) {		// 상수 호출 (static - 인스턴스 생성 없이 호출 가능)
		System.out.println("앞");
	}

	else{
		System.out.println("뒤");
	}
}

 

- 상수만을 보관하기 위한 클래스를 따로 만들 수도 있다

- 이 때 다른 클래스에서 상수의 호출은 클래스명.상수명 (Coin.FRONT)

public class Coin {
	public static final int FRONT = 0, BACK = 1;
}