한 걸음 두 걸음
자바 JAVA ] static / final 개념 간단하게 알아보기~ 본문
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으로 지정한 변수는 모든 인스턴스가 공유해서 사용합니다. 이는 모두 공통된 값
'Language > Java' 카테고리의 다른 글
자바 JAVA ] final (0) | 2019.11.20 |
---|---|
자바 JAVA ] 상속 Inheritance (0) | 2019.11.20 |
자바 JAVA ] 접근 제한자 public private protected (0) | 2019.11.18 |
자바 JAVA ] 함수 method / 매개변수/ static함수 / 가변인자 (0) | 2019.11.18 |
자바 JAVA ] 맵 Map 자료구조 활용하기 : HashMap (0) | 2019.11.17 |