<Static의 특성>
|
Static |
non-Static |
공간적 특성 |
멤버는 클래스당 하나 생성 - 객체 내부가 아닌 별도의 공간에 생성 - 클래스멤버라고 부름 |
멤버는 객체마다 별도로 존재. - 인스턴스 멤버라고 부름 |
시간적 특성 |
클래스 로딩시에 생성 프로그램 종료시 소멸 |
객체 생성시 맴버 생성 |
공유의 특성 |
동일한 클래스의 모든 객체들에 의해 공유됨 |
공유되지 않음 |
<Static의 활용>
- 객체를 생성하지 않고 바로 호출이 가능한 유틸성이 있는 클래스들을 만들 때 사용한다.
ex) Math method -> int n = Math.abs(-1)
- (공유의특성) 오류가 잃어나면 안되는 값..들에 대해서 쓰인다.
ex) 선착순 10명만 구매가능한 온라인 상품엔 사람들이 몰려서 10명 이상의 사람들이 구매할 수도 있기때문에 static변수로 설정해주면 좋은듯..?
<Static의 제약조건>
- static Method는 오직 static 멤버만 접근 가능하다
?) 왜냐하면 static은 클래스 로딩시에 생성되기 때문에 non-static 멤버가 아직 생성되지 않은 시기이기 때문에 사용하면 오류가 남.
- non-static Method는 static 멤버 사용 가능
- this 사용 불가. (첫번째와 같은 이유인듯)
반응형