01. Static
2020. 1. 8. 17:29ㆍCSE/JAVA
* 정적(static) 멤버 vs 인스턴스 멤버
- 인스턴스 멤버 : 객체(인스턴스)에 소속된 멤버
- 정적 멤버 : 클래스에 소속된 멤버
=> 정적 멤버는 객체를 생성하지 않고 사용할 수 있음
* 정적(static) 멤버 선언 & 사용
public class Calculator{ //public class 클래스이름
static double pi = 3.141592; //static 타입 필드 = 초기값
static int add(int x, int y){ //static static 리턴타입 메소드이름(매개변수 선언)...
return x+y;
}
}
int result1 = 10 * Calculator.pi; //클래스.필드
int result2 = Calculator.add(10,5); //클래스.메소드(매개값,...)
정적 요소는 클래스 이름으로 접근하는 것이 좋다.
객체 참조 변수로도 접근이 가능하지만 경고표시가 나타난다.
* 정적 초기화 블록
: 계산이 필요한 초기화 작업을 위해 사용
public class Example{
static int field1 = 10;
static int field2 = 20;
static int result;
static{ //정적 초기화 블록
result = field1 + field2;
}
}
+ 정적 메소드와 정적 블록 선언 시, 이들 내부에 인스턴스 멤버를 사용할 수 없다.
=> 사용 시, 컴파일 에러 발생
=> 사용하고 싶다면, 내부에서 객체 선언 후에 참조 변수로 사용해야 한다.
public class Example{
int field1;
void method1(){ ... }
static field2;
static field3;
static void method2(){ ... }
static{
field1 = 10; // 컴파일 에러
method1(); // 컴파일 에러
Example e = new Example();
e.field1 = 10;
e.method1();
field2 = 10;
method2();
}
static void method3(){
this.field1 = 10; //컴파일 에러
this.method1(); //컴파일 에러
Example e = new Example();
e.field1 = 10;
e.method1();
field2 = 10;
method2();
}
}
'CSE > JAVA' 카테고리의 다른 글
06. Exception (0) | 2020.01.20 |
---|---|
05. Anonymous Inner Class (0) | 2020.01.19 |
04. Nested Class, Nested Interface (0) | 2020.01.19 |
03. Annotation (0) | 2020.01.13 |
02. Singleton, Final (0) | 2020.01.12 |