- 변수나 메서드의 사용권한을 설정 할 수 있다.
[ 접근 제어자별 허용범위 ]
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 |