final, static
2014. 11. 10. 01:58ㆍBasic/etc
반응형
1. final 제한자
final은" 마지막 값이다. 변경 될수 없다"는 의미로
클래스 앞에 붙으면 더 이상 상속될수 없다.
메서드 앞에 붙으면 더 이상 오버라이딩 될 수 없다.
변수(멤버, 지역, static) 앞에 붙으면 더 이상 값을 변경할 수 없다.(상수가 됨)
2. static final / final static (final과 static은 순서와 상관없다)
final 변수는 그 값을 절대 바꿀 수 없다. 그럼 static과 final이 함께 붙어있으면?
보통 pulbic 접근제어자와 함께 사용되어 어떤 코드에서든지 접근 가능한 상수를 만들때 public static final 변수를 사용한다.
다음 클래스의 MAX_GRADE변수는 객체를 생성하지 않아도 어떤 코드에서도 School.MAX_GRADE 형태로 호출이 가능하다
-
public class School{
-
public static final int MAX_GRADE = 6; // 정적변수의 이름은 대문자와 "_"를 보통 사용한다.
-
}
-
public class MainTest{
-
}
-
}
3. final로 지정된 static 변수 초기화 방법
-
public class School{
-
public static final int MAX_GRADE = 6;
-
}
-
-
public class School{
-
public static final int MAX_GRADE;
-
// 정적변수도 선언만하고 초기화 하지 않으면 이 클래스의 생성자가 호출되어야지만
-
// 객체변수와 마찬가지로 타입에 따라 디폴드값인 0, 0.0, false, null로 초기화된다.
-
}
-
-
그럼 다름과 같은 형태의 정적변수를 초기화 하는 방법은?
-
-
public class Data{
-
pulbic static final int[] GRADE = {1,2,3,4,5,6};
-
public static final int[] OTHRE_NUM = ? // 0~99 까지의 100개의 배열값 이라면?
-
public static final double RANDOM_VALUE = ?; // 정해지지 않은 형태의 상수값 이라면?
-
}
-
-
자바언어에는 static블럭 이라는 클래스 로딩시점에 실행되는 코드 블럭이 있다. 사용방법은 다음과 같다.
-
-
public class Data{
-
public static final int[] OTHRE_NUM = ? // 0~99 까지의 100개의 배열값 이라면?
-
static{
-
OTHRE_NUM = new int[100];
-
for(int i=0; i<100; i++){
-
OTHER_NUM[i] = i;
-
}
-
}
-
}
-
-
public class Data{
-
public static final double RANDOM_VALUE = ?;
-
static{
-
// Math클래스의 정적random메서드는 0.000... ~ 0.9999... 사이의 랜덤값을 반환한다.
-
}
-
}
[출처] [26] OOP - final, static (JAVA 개발자) |작성자 zeroDay
반응형
'Basic > etc' 카테고리의 다른 글
[Android] Service 사용법 (0) | 2014.12.27 |
---|---|
클래스와 객체 (0) | 2014.11.10 |
객체의 생성, 생성자 (0) | 2014.11.10 |
싱글톤 패턴 (0) | 2014.11.10 |
extends 와 implements의 차이? (0) | 2014.11.09 |