1. 클래스변수(static변수)
  - 클래스변수는 클래스가 정의만 되어도 접근 가능한 변수로 독립적인 저장공간을 갖는 인스턴스변수와는 달리 클래스변수는 모든 인스턴스가 저
    장 공간을 공유한다. 따라서 한클래스에서 생성된 인스턴스들이 공통적인 값을 유지해야하는 경우 클래스변수로 선언하여 값을 공유할수 있도록
    한다.

  - 클래스변수 선언
static int val = 10;               // 인스턴스변수 앞에 static을 붙이면 클래스변수가 된다.

  - 클래스변수와 인스턴스변수의 차이
   Ex) 카드클래스 : 카드클래스 클래스를 정의하기위해서는 카드의 속성(무늬, 숫자, 폭, 높이)를 알아야한다.
     - 무늬, 숫자 : 무늬와 숫자는 카드마다 각각 다른값을 가지게 되기때문에 인스턴스변수로 선언한다.
     - 폭, 높이 : 폭과 높이는 각각의 카드마다 다른값을 가지는것이아니라 모두 똑같은 크기의 카드가 만들어져야하기때문에 폭, 높이 값을 모든
                      인스턴스가 공유할수있게 static변수로 선언
한다.


- 출력결과 -
heart7의 width : 120  height : 160
clover10의 width : 120  height : 160
heart7의 width : 60  height : 80
clover10의 width : 60  height : 80
heart7의 width : 180  height : 240
clover10의 width : 180  height : 240

출력결과에서도 확인할수있듯이 heart7의 인스턴스를 이용하여 width, height값을 바꾸면 clover10인스턴스의 width, height값도 똑같이 변경됨을
알수있다. 이를통해서 static으로 선언된 변수는 모든인스턴스가 static으로 선언된변수의 값을 공유한다는것을 알수있다.

참고) 클래스변수를 사용할때는 클래스이름을통해서도 접근이 가능하다. 따라서 Card.width(클래스이름.클래스변수)를 되도록 사용하도록한다.
        참조변수 heart7, clover10을 이용해서도 변경가능하지만 이럴경우 인스턴스변수로 착각하기 쉽다.


2. 클래스메서드(static메서드)
클래스변수와 마찬가지로 메서드앞에 static이라 붙어있으면 클래스변수라고한다. 클래스 메서드는 인스턴스메서드완든 달리 인스턴스를 생성하지 않아도 클래스메서드를 호출할수있다.
  ex) Math클래스


- 출력결과 -
두수의 합 : 30
두수의 차 : 10
두수의 합 : 70
두수의 차 : 10


3. 클래스변수, 클래스메서드 구조

  

'Developer > Java' 카테고리의 다른 글

HashMap value를 정렬하는 방법  (0) 2012.07.18
Java GUI - JOptionPane  (0) 2012.07.12
배열의 복사  (0) 2012.07.04
Java의 기본  (0) 2012.07.04
접근제어 지시자  (0) 2012.07.04
Posted by No names
,