[OOP] 객체지향 프로그래밍에서 선언 위치에 따른 변수의 종류

Sohyun Liiim·2021년 1월 3일

OOP

목록 보기
1/4

영역의 종류 (2가지)

1. 클래스 영역

  • 클래스 영역에 선언되는 변수 : 인스턴스 변수(iv) , 클래스 변수(cv)
  • 클래스 영역은 선언문(변수/메서드 선언)만 가능 : 일반 함수식이나 출력문(sysout)은 위치할 수 없다.
  • 선언문의 순서는 관계 없다. (다만 일반적으로 변수가 먼저 위치)

2. 메서드 영역

  • 클래스 영역 이외(메서드 영역)에 선언되는 변수 : 지역 변수(lv)

변수의 종류 (3가지)

1. 인스턴스 변수(IV, Instance Variable)

  • 멤버변수 라고도 함
  • 클래스 영역 전체에서 사용 가능
  • 인스턴스가 생성되었을 때 생성
  • IV의 집합 = 객체

2. 클래스 변수(CV, Class Variable)

  • 클래스변수 = static + 인스턴스변수
  • static 변수 라고도 함
  • 클래스 영역 전체에서 사용 가능
  • 클래스가 메모리에 올라갈 때 생성

3. 지역 변수(LV, Local Variable)

  • 로컬변수 라고도 함
  • 메서드 내부에서 변수 선언문이 수행되었을 때 생성되어 해당 메서드가 종료 시까지만 유효


변수의 초기화

1. 클래스 영역의 변수

  • 프로그램 실행 시 0 또는 null로 자동 초기화 된다.
  • 대입 연산자 = 를 이용해 초기화 선언을 할 수 있다.
Class Car {
   int wheel = 4 ;           // primitive 변수의 초기화
   Engine e = new Engine();  // reference 변수의 초기화
}
  • 초기화 블럭 을 이용해 초기화 선언을 할 수 있다.
    • 인스턴스 변수 : {...}
    • 클래스 변수 : static{...}

  • 인스턴스 변수는 생성자 를 이용해 초기화 선언을 할 수 있다.
    • 일반적으로 인스턴스 변수는 생성자로,
      클래스 변수는 초기화 블럭으로 초기화를 한다.

  • 인스턴스 변수는인스턴스가 생성될 때마다 초기화 되고,
    클래스 변수는 클래스가 처음 로딩될 때 단 한 번 초기화 된다.

2. 메서드 영역의 변수

  • 지역변수는 사용 전에 꼭 직접 초기화해야 한다.


변수 유형선언위치사용범위생성과 소멸메모리
인스턴스 변수
(=멤버변수)
클래스 내부
(멤버변수로 선언)
클래스 내부에서 사용,
private이 아닌 경우 참조변수로
다른 클래스에서 사용 가능
인스턴스 생성시 힙에 생성
GC가 메모리 수거시 소멸
힙 영역
클래스 변수
(=static변수)
클래스 내부
(static으로 선언)
클래스 내부에서 사용,
private이 아닌 경우 클래스명으로
다른 클래스에서 사용 가능
프로그램 로딩시 생성
프로그램 종료시 소멸
데이터
영역
지역 변수
(=로컬변수)
메서드 내부메서드 내부에서만 사용메서드 호출시 생성
메서드 종료시 소멸
스택 영역
profile
새싹개발자를 꿈꾸고 있어요🌱

0개의 댓글