생성자에도... 접근제어자를 사용할 수 있습니다.
일반적으로 생성자는 클래스와 같은 접근제어자를 사용하지만...
생성자에 접근제어자를 사용해서 인스턴스의 생성을 제한할 수 있습니다.
연산자 new를 통해서 인스턴스를 생성하려면... 생성자를 호출해야하는데...
생성자의 접근제어자를 private으로 하면... 연산자 new를 통해서 인스턴스를 생성할 수 없습니다.
대신... 이처럼... 내부적으로 객체를 생성해서 접근제어자를 private으로 해서 감추고
public 메서드를 호출해서 생성된 객체에 접근할 수 있도록 해야 합니다.
getInstance메서드가 하는 일은 생성된 객체의 참조를 반환하는 것 뿐입니다.
만일을 대비해서...참조가 null인 경우에는 새로운 객체를 생성하도록 했고요.
외부에서 객체를 생성할 수 없기 때문에... 객체생성없이 호출할 수 있도록 static메서드이어야 하고요.
static메서드에서 참조할 수 있어야하기 때문에... 객체에 대한 참조도 static이어야 합니다.
그리고... 이처럼 생성자의 접근제어자가 private인 경우에는... 다른 클래스의 조상이 될 수 없습니다.
전에 배운 것과 같이... 자손클래스의 인스턴스를 생성하면... 조상의 생성자를 호출하는데...
조상의 생성자가 private이라서... 호출할 수 없기 때문입니다.
그래서... 클래스 앞에 final을 붙여줘서... 상속을 통해 확장할 수 없는 클래스라는 것을 알려주는 것이 좋습니다.
Singleton클래스는 생성자의 접근제어자가 private이라서... 이처럼 new연산자를 사용해서 인스턴스를 생성할 수 없고...
아래의 코드와 같이... 메서드를 통해서 이미 생성되어 있는 인스턴스의 참조를 얻어와야 합니다.
'Backend > java' 카테고리의 다른 글
다형성이란 무엇인가. (0) | 2018.08.12 |
---|---|
제어자의 조합 (0) | 2018.08.12 |
접근제어자를 통한 캡슐화 (0) | 2018.08.12 |
접근 제어자란 무엇인가 (0) | 2018.08.12 |
abstract란 무엇인가 (0) | 2018.08.12 |
#IT #먹방 #전자기기 #일상
#개발 #일상