한 걸음 두 걸음

자바 JAVA ] static / final 개념 간단하게 알아보기~ 본문

Language/Java

자바 JAVA ] static / final 개념 간단하게 알아보기~

언제나 변함없이 2019. 11. 18. 14:40
반응형

static으로 지정된 변수나 함수는 프로그램이 시작될 때 생성되고 프로그램이 종료될 때 소멸됩니다.

final으로 지정되면 변경이 불가능합니다.

static a = 1;

a++; //전역변수처럼 사용됩니다. 어디서든 사용가능합니다.

static final a = 1;

a++; //불가

** Static으로 지정된 것은** 객체를 만들기도 전에 생성되므로(프로그램 시작 시) 클래스 내부의 static 메소드나 변수는 클래스명을 이용하여 접근할 수 있습니다.

Class A{

static int a = 10;

}

public class Main {
public static void main(String[] args) {
System.out.println(A.a + ""); //10 출력
}
}

단, static으로 지정하면 해당 메모리는 딱 한개만 할당되므로, 여러 인스턴스를 만들어 제각기 활용할 수 없습니다. (클래스변수라고 합니다.) 여러 개를 만들 경우 많은 객체들이 모두 공유해서 사용하므로 모두 같은 값을 가지는 경우 사용하는 것이 좋습니다.

final으로 지정되면 변경이 불가능하므로 변수, 메소드, 클래스 모두에 적용시켜 사용할 수 있습니다.

변수는 주로 상수를 만들 때 활용됩니다.

static final MAX_LEN = 10;

메소드에 적용시키면 재정의가 불가능해집니다.

Class A {

finalvoid print(){ }

}

Class B extends A{

@Override

void print(){ } //불가

}

클래스에 적용시키면 더이상 상속해줄 수 없게 됩니다.(종단클래스라 합니다.)

Class final A {

}

Class B extends A { //불가

}


static final 변수
static으로 지정한 변수는 모든 인스턴스가 공유해서 사용합니다. 이는 모두 공통된 값

반응형