- 변수나 메서드의 사용권한을 설정 할 수 있다.

 

 

[ 접근 제어자별 허용범위 ]

private -> default -> protected -> public

 

 

[ private ]

접근 제어자가 private로 설정되있을 경우, 변수나 메서드는 해당 클래스 안에서 접근이 가능하다.
public class Sample {
  private String name;
  
  private String getName() {
    return this.name;
  }
}
변수 name와 메서드 getName()은 오직 Sample 클래스에서만 접근이 가능하다.

 

[ default ]

접근 제어자를 별도로 설정하지 않은 경우, 변수나 메서드는 default 제어자가 자동 설정되고, 동일한 패키지 안에서 접근이 가능하다.

[ house/HouseKim.java ]

package house;

public class HouseKim {
  String lastName = "kim"; \
}

[ house/HousePark.java ]

package house;

public class HousePark {
  String lastName = "park";
  
  public static void main(String[] args) {
    HouseKim kim = new HouseKim();
    System.out.println(kim.lastName);
  }
}
HouseKim과 HousePark의 패키지는 house로 동일하다.
따라서, HousePark 클래스에서 default 제어자로 설정된 HouseKim의 lastName 변수에 접근이 가능하다.

 

[ protected ]

protected 제어자가 붙은 변수나 메스드는 동일 패키지의 클래스 또는 해당 클래스를 상속받은 클래스에서만 접근이 가능하다.

[ house/HousePark.java ]

package house;

public class HousePark {
  protected String lastName = "park";
}

[ house/person/EungYongPark.java ]

package house.person;

import house.HousePark;

public class EungYongPark extends HousePark {
  public static void main(String[] args) {
    EungYongPark eyp = new EungYongPark();
    
    System.out.println(eyp.lastName);
  }
}
HousePark 클래스를 상속한 EungYongPark 클래스의 패키지는 서로 소속된 패키지가 다르지만 HousePark의 변수 lastName의 접근 제어자가 protected이기 때문에 EungYongPark에서 접근이 가능하다.
만약 변수 lastName의 접근 제어자가 default였다면 컴파일 에러가 발생하였을 것이다.

 

[ public ]

public 접근 제어자가 붙은 변수나 메서드는 어떤 클래스에서도 접근이 가능하다.
package house;

public class HousePark {
  protected String lastName = "park";
  
  publi String info = "this is public message.";
}
package house.HousePark;

public class Sample {
  public static void main(String[] args) {
    HousePark housepark = new HouserPark();
    
    System.out.println(housepark.info);
  }
}
HousePark 클래스의 변수 info의 접근 제어자는 public으로 어떤 클래스에서도 접근이 가능하다.

 

'#Java' 카테고리의 다른 글

추상 클래스(Abstract Class)  (0) 2024.04.17
static 변수  (0) 2024.04.09
String 문자열  (0) 2024.04.08
다차원 배열  (0) 2024.04.05
배열(Array)  (0) 2024.04.05

+ Recent posts