본문 바로가기
back-end/JAVA

8) 객체지향-클래스 변수와 인스턴스 변수의 차이점

by 모두의 향연 2021. 5. 11.
728x90
반응형

8) 객체지향-클래스 변수(cv)와 인스턴스 변수(iv)의 차이점

 

포커 카드

 

포커 카드 하나하나가 객체이지요. 지금 위 사진에는 카드가 3장이니 객체가 3개 있습니다.

숫자와 무늬는 객체마다 다르게 유지(숫자:A~10까지/무늬:하트,스페이스..)되어야 하는 값이고

높이와 폭은 포커마다 같게 유지(카드의 높이와 폭은 모두 같다)되어야 하는 값입니다.

 

속성(변수)=

인스턴스변수(개별속성): 무늬, 숫자 / 클래스변수(공통속성): 폭, 높이

 

class Card {

       String kind; //무늬(iv)

       int number; //숫자(iv)

 

       static int width; //폭(cv)

       static int height; //높이(cv)

}

 

클래스를 만들었으면 객체를 만들어서 객체의 속성과 기능을 사용해야겠죠.

Card c = new Card(); //카드 객체 생성

c.kind = "HEART"; //카드의 무늬를 하트로 지정

c.number = 5; //카드의 숫자를 5로 지정

c.width = 200; //카드의 폭을 200으로 지정

c.height = 300; //카드의 높이를 300으로 지정

그런데, 여기서 cv는 저렇게 사용하시면 안 됩니다.

 

이렇게 사용하셔야 합니다.

Card.width = 200;

Card.height = 300;

 

이전엔 참조 변수로 변수를 접근했는데, 클래스 변수는 클래스 이름으로 접근하셔야 합니다.

왜냐하면 모두 다 '참조 변수. 변수 이름'으로 쓰게 되면 모든 변수를 iv로 오해할 수 있기 때문입니다.

인스턴스 변수와 클래스 변수를 구별하기 위함입니다.

 

시간 있으시면 남궁성 선생님의 자바의 정석 flash동영상을 보시면 도움이 많이 되실 겁니다.

무료 배포하셔서 검색하시면 나오실 거예요.

 

*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 되고요! 저는 개인적으로 공부하는 게 목적입니다*

728x90
반응형