접근 제한자란 클래스 내에서 멤버의 접근을 제한하는 역할을 한다.
public
어떤 클래스든 접근할 수 있다는 것을 의미. (전체 공개)
protected
같은 패키지와 서로 다른 패키지다 하더라도 상속받은 자식 클래스에서는 접근할수 있다는 것을 의미
default
접근 지정자(접근제한자를 적지 않은 경우)
자기자신과 같은 패키지에서만 접근할 수 있다는 것을 의미
private
자기 자신만 접근할 수 있다는 것을 의미
public class AccessObj{
private int i = 1;
int k = 2; // default접근 제한자
public int p = 3;
protected int p2 = 4;
}
public class AccessObjExam extends AccessObj{ //패키지는 다르지만 상속관계(extends)에 있으므로
public static void main(String[] args) { //protected 접근제한자로 지정된 필드 p2에 접근할 수 있다.
AccessObjExam obj = new AccessObjExam();
System.out.println(obj.p);
System.out.println(obj.p2);
System.out.println(obj.k); //같은 패키지 시 오류 발생하지 않고, 다른 패키지 시 컴파일 오류가 발생
System.out.println(obj.i); //컴파일 오류가 발생
}
}
public class Car {
public String name;
protected int number;
public Car(String name, int number) {
this.name = name;
this.number = number;
}
}
public class CarExam{
public static void main(String[] args) {
Car car = new Car("포니", 1234);
System.out.println("name: " + car.name);
System.out.println("number: " + car.number);
}
}