public (모든 패키지에서 접근 가능)
priavate (자기 클래스에서만 접근 가능)
default (자기 패키지에서만 접근 가능)
protected (자기 자신만 접근 가능)
public(공용문) - 누구나 들어올 수 있음
즉, public 키워드를 사용하면 모든 패키지, 모든 클래스에서 접근 가능하다
- 어디서든 접근 가능 (같은 패키지, 다른 패키지, 상속 여부 상관없음)
public class pu01 {
public void opendoor() { // 누구나 사용할 수 있는 메서드
System.out.println("문을 열었습니다");
}private - 나만 접근 가능
privated은 클래스 내부에서만 사용할 수 있으며, 다른 클래스에서는 절대 접근 할 수 없다.
- 같은 클래스 내에서만 접근 가능
- 다른 클래스에서는 접근 불가능 (같은 패키지에서도 불가능)
- 보통 멤버 변수나 내부적인 메서드에 사용
public class pr01 {
private String mySecret = "비밀 일기장";
private void readMyDiary() {
System.out.println("내 비밀 일기장을 읽고 있습니다");
}
}protected - 가족만 들어올 수 있음
같은 패키지 내에서는 자유롭게 접근 가능하고, 다른 패키지에서는 상속 받은 클래스만 접근 가능하다.
- 같은 패키지에서는 public 처럼 접근 가능
- 다른 패키지에서는 상속받은 클래스에서만 접근 가능
public class pro01 {
protected void family() { // 가족만 참여할 수 있는 회의
System.out.println("가족 회의를 시작합니다.");
}
}
class Son extends pro01 {
void attendance() {
family(); // 자식 클래스에서 접근 가능
System.out.println("아들이 가족회의에 참석 합니다");
}
}default - 같은 패키지에서만 접근 가능
접근 제어자는 같은 패키지 내에서만 접근 가능하고, 다른 패키지에서는 접근 할 수 없다.
- 같은 패키지 내에서 접근 가능
- 다른 패키지에서는 접근 불가능
public class de01 {
void neighborhood() { // 같은 패키지에 있는 클래스만 접근 가능
System.out.println("동네 친구들이 놀러왔습니다");
}
}싱글톤 패턴
하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
class 바론 {
public static 바론 instance = new 바론();
private 바론() {
}
}
public class Single01 {
public static void main(String[] args) {
System.out.println("10분지났다");
바론 b1 = 바론.instance;
System.out.println("20분지났다");
}
}Share article