[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. 클래스 변수와 인스턴스 변수 예제


좋은 웹페이지 즐겨찾기