접근제한자

  • 클래스 변수 메서드 선언부에 사용
  • public, protect, package, private
    • 한번만 사용가능
  • 그외 제한자
    • static, final, abstract, synchronized

final

  • class
    • 상속 금지, 오버라이드 금지
  • method
    • 재정의 불가, 오버라이드 금지
  • 변수
    • 상수화

접근 제한자

  • public
    • 어디든 접근 가능
  • protect
    • 다른 클래스라도 자손이면 접근가능
  • package - 기본
    • 같은 패키지면 접근가능
  • private
    • 같은 클래스여야 접근가능
    • 상속은 가능하대, 접근이 안됨
  • 순서
    • public - protect - package - private

은닉화

  • 직접 접근 막기
  • setter, getter로 접근

싱글톤

  • 여러 객체 필요없을때
  • 생성 삭제가 많은 비용이 들때
  • new막기
    • 생성자 private
  • 접근 금지
    • private 변수들 지정
  • 인스턴스 반환
    • static으로 인스턴스 생성
    • getter를 이용해 해당 인스턴스 반환
      • static getter이어야 한다.
class A{
    private int a;

    private static A a = new A();

    private A(){}

    public static A getA(){
        return a;
    }
}