자바 멤버 변수의 접근 제한자와 변수의 유효 범위에 대해서 알아볼께.

자바의 멤버변수 접근 제한자

자바는 객체지향의 특성인 캡슐화(encapsulation)와 정보은폐(information hiding)를 제공하기 위해 멤버 변수에 제한자를 사용해.

자바에서 제공하는 멤버 변수 제한자는 public, private, protected를 제공하는데 별도의 접근 제한자가 없는 경우에는 동일한 패키지와 하위 클래스에서 사용가능한 변수라고 생각하면 돼.

public

public으로 선언된 객체 변수는 소속된 클래스가 접근 가능하면 항상 접근이 가능한 변수야.

class Box {
  public int width;
  public int height;
  public int depth;
  public long idNum;
  static long boxID = 0;
  public Box() {
    idNum = boxID++;
  }
}

class PublicDemo {
  public static void main(String args[]) {
    Box mybox1 = new Box();
    Box mybox2 = new Box();
    mybox1.width = 7;
    mybox2.depth = 20;
  }
}

private

private으로 선언된 객체 변수는 소속된 클래스 내부에서만 사용이 가능해.

class Box {
  private int width;
  private int height;
  private int depth;
  ...
}

class PublicDemo {
  public static void main(String args[]) {
    Box mybox1 = new Box();
    mybox1.width = 7; //에러 발생
  }
}

protected

protected로 선언된 객체 변수는 소속된 클래스의 하위 클래스와 소속된 클래스와 같은 패키지의 클래스에서만 사용가능해.

class Box {
  private int width;
  private int height;
  private int depth;
  protected int count; //이 클래스와 이 클래스의 하위 클래스에서 사용
  ...
}

class ProtectedDemo1 extends Box {
  //extends를 이용하여 Box 클래스의 하위 클래스로 생성
  public static void main(String args[]) {
    Box mybox2 = new Box();
    mybox2.count = 7; //접근가능
  }
}

변수의 유효범위

변수는 유효범위를 기준으로 구분할 수가 있는데 유효범위를 기준으로 변수를 구분하면 멤버변수, 메소드 매개변수와 지역변수, 예외 처리기 매개변수로 나눌 수 있어.

변수의 유효범위

Leave a Reply

Your email address will not be published. Required fields are marked *

Latest Post