Java 입문 | 클래스(Class) | 멤버 변수(Member Variable)

멤버 변수(member variable)는 메소드 밖에서 선언된 변수를 말한다. 메소드 안에 선언된 변수는 지역(local) 변수라고 한다.

  • 맴버 변수
    • 객체 변수
      • 객체 속성 변수
      • 객체 참조 변수
    • 클래스 변수
    • 종단(final) 변수

멤버 변수의 구성

멤버 변수 선언은 접근 한정자(public, private, protected)를 제외하고는 일반 변수의 구성과 동일하다.

[public/private/protected] [static/final] 변수 타입 변수명;

멤버 변수 선언

멤버 변수 선언은 접근 한정자를 제외하고는 일반 변수의 선언과 동일하다.

int a;
public int b;
private MyClass myclass;

선언과 초기화 및 생성을 같이 할 수 있는데 코드로 보면 아래와 같다.

public int b = 0;
private MyClass myclass = new MyClass();

멤버 변수명은 일반 변수명과 동일하게 소문자로 시작하는 것이 관례이다. 단, static final으로 선언된 변수인 경우 모두 대분자를 하는 경우도 많다.

private static final int MY_NUM;

이는 일종에 상수같은 역활을 한다고 생각하면 된다.

접근 제어 한정자(Access control modifiers)

  • public

    • public는 모든 클래스에서 접근 가능하다.
  • private

    • final은 한번 선언이 되면 변경이 불가능 하다.
  • protected

    • 같은 클래스나 해당 클래스에서 하위 파생 클래스에서만 접근 할 수 있다.
  • 접근 한정자 사용 안 함

    • 한정자를 사용하지 않고 선언된 멤버 변수는 같은 패키지 내의 클래스에서만 접근 가능하다.

객체변수

객체 변수는 객체가 가질 수 있는 특성을 표현한다. 객체 변수를 표현하는 값에 따라 객체 속성 변수와 객체 참조 변수로 2가지 형태로 구분된다.

객체 속성 변수

객체 속성 변수는 기본 자료형(int, float, char, byte 등)의 값을 가지는 변수이다.

public int b;

변수의 값이 복사되어 전달된다.

객체 참조 변수

객체 참조 변수는 생성된 객체를 지정하는 변수이다. 객체에 대한 참조(reference) 즉, 객체가 생성 저장된 주소(address)를 가진다.

private MyClass myclass;

객체에 대한 주수가 복사되어 전달되므로 결국 같은 객체를 가리키게 된다.

클래스 변수 - static 키워드

클래스 변수는 다른 말로 정적 변수라고도 한다. static을 사용하여 선어하고 전역변수(global variable)로써의 개념을 가진다.

  • static을 사용하여 선언. 전역변수(global variable)의 개념을 가짐

  • 그 클래스로부터 생성된 모든 객체들이 하나의 클래스 변수를 공유. 클래스변수는 하나의 클래스로부터 생성된 객체들 사이의 통신이나 객체들 사이의 공통된 속성을 표현하는데 사용가능

  • 일반변수와 달리 객체이름을 통해 접근 불가 → 클래스이름을 통해서 접근

final 변수

  • final를 사용하여 변수를 지정하면 사용하여 선언. 변할 수 없는 상수값을 가짐
  • final이 붙은 변수는 단 한번 초기화 할 수 있으며 그 이후에는 그 값을 변경할 수 없음
  • 변수이름 사용의 관례상 final변수는 대문자를 많이 사용