프로그래밍 언어/자바의 정석 기초편
자바의 정석 기초편 ch6-12,13 클래스 변수 인스턴스 변수
life grow
2022. 6. 30. 22:36
6-12 클래스 변수와 인스턴스 변수
숫자와 무늬는 객체마다 개별 값이다.
반면 폭하고 높이는 모든 객체가 공통적으로 가져야 함.
같은 속성인데도 무늬와 속성은 개별적, 폭과 높이는 공통적이다.
객체 속성 중에
개별적인 것은 iv(인스턴스 변수),
공통적인 것은 cv(클래스 변수)로 한다.

cv를 쓸 때,
c.width로 써도 되지만(가능 o, 권장 x)
Card.width = 200;으로 쓰는 게 좋다.
앞에 클래스 이름을 붙여줘야 한다.
6-13 클래스 변수와 인스턴스 변수 - 예제
iv는 객체마다 공간이 있지만
cv는 항상 공간이 1개다.
객체가 2개니까 iv도 2개다.
iv는 객체마다 1개씩이다.
cv도 객체랑 같이 있을 거 같지만 아니다.
같이 있으면 값이 다를 수 있고, 똑같이 유지하기도 쉽지 않다.
또 같은 값을 별도의 저장공간에 가지면 저장공간 낭비다.
개념적으로 cv도 객체 속성이지만 공유하는 것이기 때문에
객체에 있지 않고 따로 만들어서 하나만 유지하고 메모리 공간을 절약한다.

코드가 실제로 어떻게 작동하는지 보여준다.
코드를 실행해도 이해가 안 될 때는 그림을 그려보자.
따라서 그려보자.
그림 보지 말고 코드만 보고 그림을 그려보자.
클래스의 멤버들은 객체를 생성해야 사용할 수 있는데
cv는 객체생성 없이 사용할 수 있다.
모든 인스턴스는 자신을 생성한 클래스의 주소를 갖고 있다.