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을 명시하는 것이 좋다.