접근제어자란?
변수나 메서드, 생성자 등의 앞에 붙어 사용 권한을 설정하는 용도로 사용됨.
접근제어자는 다음과 같은 순서로 접근권한이 더 약해짐
private → default(기본) → protected → public
private
- 해당 클래스 안에서만 접근이 가능
- 같은 패키지도 다른 클래스에서는 접근 불가
public class AnotherClass {
private int privateVariable;
private void privateMethod() {
System.out.println("private모드입니다")
}
}
default
- 가장 기본적인 권한 상태, 아무것도 안쓰면 default접근제어자가 자동 설정됨
- 동일 패키지 내에서 접근 가능
package house; → 패키지가 동일
class HousePark {
String lastname = "park";
public static void main(String[] args) {
HouseKim kim = new HouseKim();
System.out.println(kim.lastname); → HouseKim 클래스의 lastname 변수 사용 가능
}
protected
- 동일 패키지 또는 해당 클래스를 상속한 자식 클래스에서만 접근 가능
package house.person; → 서로 다른 패키지
import house.HousePark;
public class Geuns extends HousePark { → HousePark 상속
public static void main(String[] args) {
Geuns gp = new Geuns();
System.out.println(gp.lastname); → 상속한 클래스의 protected 변수는 접근 가능
}
}
public
- 어디서든 접근 가능함
public class MyClass {
public int publicVariable;
public void publicMethod() {
// 메서드 내용
}
}