public : 모든 패키지 접근 가능
private : 본인의 클래스에서만 접근 가능
default (디폴트) : 같은 패키지에서만 접근 가능
protected : 자식과 같은 패키지에서 접근 가능
✅ Class 앞에는 무조건 public 붙여야 한다.
싱글 톤 패턴 (Singleton Pattern)
(유일하게 메인 시작 전에 heap에 객체 올리기)
package ex12;
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분지났다");
    }
}private 바론을 하면 new를 할 수 없다.하지만 
public static 바론 instance를 사용하여 new 바론을 띄울 수 있다. 즉시 로딩 & 지연로딩
package ex12;
// 즉시로딩
class 태양 {
    public static 태양 instance = new 태양();
    private 태양() {
    }
}
// 지연로딩
class 바론 {
    private static 바론 instance;
    public static 바론 getInstance() {
        if (instance == null) {
            instance = new 바론();
        }
        return instance;
    }
    private 바론() {
    }
}
public class Single01 {
    public static void main(String[] args) {
        태양 d1 = 태양.instance; // main 시작전에 뜸 (즉시로딩)
        바론 d2 = 바론.getInstance(); // 이때 뜸 (지연로딩)
    }
}Share article