반응형
CV(class variable 클래스 변수(static 변수, 공유변수)
- 클래스 영역에 선언(클래스가 메모리에 올라갈 때 생성 = 객체를 만들 때)
- 객체없이도 사용가능하며 공유 변수(shared varible) 라고도 한다.
- 공통으로 가져야할 속성에 사용된다.
- 해당 클래스의 모든 인스턴스가 공유해야 하는 값을 유지하기 위해 사용된다.
- static 키워드를 가지는 변수
ex) 카드의 폭과 높이
- CV는 메소드호출할 때 클래스이름을 풀로 다 적어준다.
ex) Card c = new Card()
c.width = 200; <--- △ 권장하지 않음, Card.width = 200; <-- 권장
IV(instance variable) 인스턴스 변수
- 클래스 영역에 선언(인스턴스가 생성되었을 때 생성.)
- 객체가 생성되야 사용 가능하다. 객체 필요.
- 개별적으로 가지는 속성에 사용된다.
- 인스턴스마다 가져야 하는 고유한 값을 유지하기 위해 사용된다.
- static 키워드를 가지지 않는 변수
ex) 카드의 무늬,숫자 같은 것
메소드영역에 생성
※ LV (local variable) 로컬 변수
- 클래스 영역이외의 영역( 메소드, 생성자, 초기화 블록 내부)에 선언
- 블록내부에서만 사용되고 메소드 종료시 자동제거 됨.
▶ 필드는 객체의 고유데이터, 객체가 가져야 할 부품, 객체의 현재 상태 데이터를 저장하는 곳이다.
{ 자동차 객체 } | ||
[고유 데이터] |
[상태 데이터] | [부품] |
제작회사 모델 색깔 최고속도 |
현재속도 엔진 회전 수 |
차체 엔진 타이어 |
- 클래스 영역 어디든 선언가능 (메소드, 생성자내부에는 선언 될 수 없다.)
- 클래스영역에는 선언문만 생성가능하다 ; frint문이나 연산식은 작성할 수 없다.
- 기본타입과 참조타입 모두 사용할 수 있다.
- 초기값 없이 선언되더라도 기본값으로 자동 초기화 된다.
22/05/01 추가정리
▶ 클래스 필드와 인스턴스 필드 비교
클래스 필드는 첫번째 객채에서 1이 추가되어 1이 출력되고, 아무 연산이 없던 두번째 객체에서도 1이 출력되었다.
※ 클래스필드는 모든 객체가 공유하기 때문이다.
인스턴스 필드는 첫번째 객체에서는 1이 추가되어 1이 출력되었지만, 두번째 객체에서는 연산이 따로 없기 때문에
초기값인 0이 그대로 출력되었다.
※ 인스턴스 필드는 개별적인 속성을 갖는다. 객체마다 다른 값을 가질 수 있다.
반응형
'자바의 정석' 카테고리의 다른 글
인스턴스 멤버와 정적 멤버 (0) | 2022.04.15 |
---|---|
메소드 Method (0) | 2022.04.12 |
생성자 Constructor (0) | 2022.04.12 |
클래스 Class (0) | 2022.04.11 |
객체 지향 프로그래밍 기본 개념 (0) | 2022.04.10 |