while(1) 작심삼일();

접근제어자 (public, protected, private)과 싱글톤 본문

CS/java

접근제어자 (public, protected, private)과 싱글톤

hanjongho 2021. 2. 16. 03:19

멤버클래스, 메서드, 생성자에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록(캡슐화) 제한하는 역할을 함.

 

  • private : 같은 클래스 내에서만 접근 가능
  • default : 같은 패키지 내에서만 접근 가능
  • protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근 가능
  • public : 접근 제한이 전혀 없다.

접근 범위 : private < default < protected < public 순으로 보다 많은 접근을 허용한다.

 

생성자를 private로 지정하면 외부에서 인스턴스를 생성할 수 없고, 클래스 내부에서만 생성이 가능하다. 이 방법을 이용하여 싱글톤 패턴을 만들 수가 있는데, 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴을 의미한다. 이렇게 되면 한번의 객체 생성으로 인해 재 사용을 하여 메모리 효율을 높일 수 있고, 전역성으로 인해 다른 객체와 공유가 쉽다.

final class Singleton{
    private static Singleton s = new Singleton();
    
    private Singleton() {
    }
    
    public static Singleton getInstance() {
    	return s;
    }
}

생성자가 private이 되어버리면, 자식클래스에서 부모클래스의 생성자를 호출할 수 없기 때문에 부모클래스가 될 수 없다. 그렇기 때문에 class앞에 final을 명시하는 것이 좋다.

'CS > java' 카테고리의 다른 글

JVM 메모리 구조  (0) 2021.04.28
JDK, JRE, JVM  (0) 2021.04.27
그 외 제어자(static, final, abstract)  (0) 2021.04.27
객체지향 설계 기법  (0) 2021.02.10
SOLID(객체 지향의 설계) 5가지 원칙  (0) 2021.01.28
Comments