1.3.7 static 변수와 static 메서드

앞서 클래스에서 생성한 인스턴스의 변수와 메서드를 살펴보았다.

인스턴스들은 똑같은 클래스를 바탕으로 하더라도 인스턴스마다 내부의 변숫값과 메서드의 행동이 다르다.

하지만 static을 붙임으로써 변수와 메서드를 클래스에서 유일한 것으로 다룰 수 있다.


static 변수


static 변수(정적 변수)는 클래스에서 인스턴스를 몇 개 만들어도 메모리에는 단 하나만 생성된다.(상수도 마찬가지이다.) static 변수는 모든 인스턴스에서 같은 값을 공유한다. static 변수 선언은 다음과 같이 한다.


[구문] static 변수 선언

static 자료형 변수명;


예를 들어 다음 에에서는 Dog 클래스의 static변수인 type에 '포유류'를 대입했다.

이렇게 하면 Dog 클래스에서 만든 어느 인스턴스에서도 type을 참조하면 '포유류'라는 값을 가져온다.


또한 인스턴스를 생성할 때마다 static 변수인 count에 값을 더해 Dog 인스턴스가 몇 개 만들어졌는지 알 수 있다.


count가 static이 아니면 인스턴스를 생성할 때마다 0으로 초기화되므로 count는 항상 1이 될 것이다.



static 메서드


static 메서드는 인스턴스의 상태와 관계없이 지정된 처리를 하기 위한 메서드이다.

static 메서드는 다음과 같이 선언한다.


[구문] static 메서드


static 반환형 메서드명(인수형 인수명0 {

... 메서드 본체 ...

}



static 메서드는 클래스의 상태(필드값)와 관게없는 범용 처리를  구현하는 데 자주 사용한다.


static 변수와 메서드에 접근하기


static 변수와 메서드는 인스턴스를 생성하지 않고 접근할 수 있다. static 변수와 메서드에 접근하려면 다음과 같이 한다.


[구문] static 변수

클래스명.변수명


[구문] static 메서드

클래스명.메서드명(인수, ...)


예를 들어 앞선 예제에서도 등장한 System.out.println의 out은 "System 클래스의 static 변수로, PrintStream 클래스의 인스턴스이다. 결과적으로 System.out.println에서는 PrintStream 객체의 메서드인 println을 실행하는 것이다.


static 변수와 메서드에서 static이 아닌 변수와 메서드에는 접근할 수 없다.

하지만 static이 아닌 변수와 메서드에서 static인 변수와 메서드에는 접근할 수 있다.































































'프로그래밍 > JAVA' 카테고리의 다른 글

1.4.2 산술 연산  (0) 2019.01.23
1.4 기본적인 계산  (0) 2019.01.23
1.3.6 주석  (0) 2019.01.22
1.3.5 식별자  (0) 2019.01.22
1.3.4 키워드  (0) 2019.01.22
TAGS.

Comments