[Java의 정석]Chapter6.객체지향 프로그래밍(11~13)
Chapter 6. 객체지향 프로그래밍
11. 선언위치에 따른 변수의 종류
- 변수의 종류 :
클래스 변수
,인스턴스 변수
,지역변수
- 변수의 종료를 결정짓는 중요한 요소는
변수의 선언 위치
- 변수의 종류를 파악하기 위해서 변수가 어느 영역에 선언되었는지 확인 하는 것이 중요
멤버변수
를 제외한 나머지 변수들은 모두지역변수
- 멤버변수 중
stasic
이 붙은 것은클래스 변수
, 붙지 않은 것은인스턴스 변수
임
변수의 종류 | 선언위치 | 생성시기 |
---|---|---|
클래스 변수(class variable) | 클래스영역 | 클래스가 메모리에 올라갈 때 |
인스턴스 변수(instance variable) | 클래스영역 | 인스턴스가 생성되었을 때 |
지역변수(local variable) | 클래스 영역 이외의 영역(메서드,생성자, 초기화 블럭 내부) | 변수 선언문이 수행되었을 때 |
🍔 인스턴스 변수(instance variable)
- 클래스 영역에 선언
- 인스턴스를 생성할 때 만들어짐
- 인스턴스 변수(iv)의 값을 읽어오거나 저장하려면 먼저 인스턴스를 생성해야 함
- 인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값 가질 수 있음(독립적인 저장공간)
- 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스 변수로 선언
🍟 클래스 변수(class variable)
- 클래스 변수 선언 방법 : 인스턴스 변수(iv) 앞에
static
붙이기 - 모든 인스턴스가 공통된 저장공간(변수)을 공유
- 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 속성의 경우, 클래스 변수로 선언
- 인스턴스 변수와 달리 인스턴스를 생성하지 않고 언제든지 바로 사용가능
'클래스이름.클래스변수'
와 같은 형식으로 사용
🥤 지역변수(local variable)
- 메서드 내에 선언되어 메서드 내에서만 사용 가능
- 메서드가 종료되면 소멸되어 사용불가
- for문 또는 while문의 블럭내에 선언된 지역변수는 블럭{ } 내에서만 사용 가능하며, 블럭{ }을 벗어나면 소멸되어 사용 불가
(6장 이전에 선언한 변수들은 모두 지역변수)
12. 클래스 변수와 인스턴스 변수
<카드의 속성을 이용한 예시>
class Card {
String kind; //무늬(인스턴스 변수-개별속성)
int number; //숫자(인스턴스 변수-개별속성)
static int width = 100; //폭(클래스 변수-공통속성)
static int height = 250; //높이(클래스 변수-공통속성)
}
▶ 인스턴스 변수는 인스턴스가 생성될 때 마다 생성되므로 인스턴스마다 각기 다른 값을 유지
▶ 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값 유지
13. 클래스 변수와 인스턴스 변수 예제
Author And Source
이 문제에 관하여([Java의 정석]Chapter6.객체지향 프로그래밍(11~13)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wendy1126/Java의-정석Chapter6.객체지향-프로그래밍1113저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)