접근 제어자 동일 클래스 동일 패키지 상속받은 클래스 전체(외부)
public O O O O
(default) O O X X
protected O O O X
private X X X X

생성자에서 접근 제어자 생략 시

  1. 생성자 앞에 접근 제어자를 명시하지 않으면 default 접근 제어자가 적용.
  2. 만약 생성자를 다른 패키지에서도 사용할 예정이라면 public 접근 제어자를 붙여야 한다.

현재 코드의 상황


실제로 필요한 경우

  1. 같은 패키지 내에서만 사용할 경우:
  2. 다른 패키지에서도 사용할 경우:

예제

같은 패키지에서 사용

package exam;

public class Main {
    public static void main(String[] args) {
        Person person = new Person("김철수", "30", "서울");
        person.printInfo(); // 정상 동작 (default 접근 제어자는 같은 패키지에서 사용 가능)
    }
}

다른 패키지에서 사용

package another;

import exam.Person;

public class Main {
    public static void main(String[] args) {
        Person person = new Person("김철수", "30", "서울");
        person.printInfo(); // 오류 발생! (default 접근 제어자는 다른 패키지에서 접근 불가)
    }