클래스 변수와 클래스 메소드
- 멤버변수와 멤버메소드를 선언할 때 static을 붙이면 클래스 멤버로 선언된다.
- 일반적으로 멤버라 하면 인스턴스 멤버를 의미하는 경우가 많습니다.
클래스멤버와 인스턴스멤버를 합하여 멤버라 지칭합니다.
- 클래스멤버는 인스턴스와 관계없이 동작됩니다.
- 클래스멤버는 모든 인스턴스에서 공유할 수 있습니다.
- 단, 클래스멤버에서는 인스턴스 멤버에 접근 할 수 없습니다.
.
.
클래스 변수는 인스턴스 변수와 다른 공간에서 작용한다.
예제1
class InstCnt
{
static int instNum = 0;
// 클래스 변수로 인스턴스와 상관없이 동작함.
int num = 0;
public InstCnt(){
instNum++;
num++;
System.out.println("클래스 변수 : " + instNum);
System.out.println("인스턴스 변수 : " + num);
}
}
class ClassVar
{
public static void main(String[] args)
{
InstCnt cnt1 = new InstCnt(); // 클래스 변수 : 1, 인스턴스 변수 : 1
InstCnt cnt2 = new InstCnt(); // 클래스 변수 : 2, 인스턴스 변수 : 1
InstCnt cnt3 = new InstCnt(); // 클래스 변수 : 3, 인스턴스 변수 : 1
}
}
.
.
클래스 변수는 인스턴스 없이도 접근 가능하다.
예제2
class AccessWay
{
static int num = 0;
AccessWay(){ incrCnt(); }
public void incrCnt(){ num++; }
// 같은 클래스내에서 자유롭게 접근 가능
}
class ClassVarAccess
{
public static void main(String[] args)
{
AccessWay.num++;
// 인스턴스 없이 클래스로 접근 가능
AccessWay way = new AccessWay();
way.num++;
//인스턴스를 통해서도 접근 가능
System.out.println("num : " + AccessWay.num); // num : 3
}
}
728x90
반응형
'Java > 본격 Java 클래스' 카테고리의 다른 글
[Java] Nested 클래스 (0) | 2020.07.14 |
---|---|
[Java] 클래스 메소드 (0) | 2020.06.25 |
[Java] 정보 은닉(private) (0) | 2020.06.25 |
[Java] 실습 - 삼각형 넓이 구하기 (0) | 2020.06.25 |
[Java] 실습 - 사과판매3(생성자 이용) (0) | 2020.06.25 |