English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 예제에서는 Java로 비공개 생성자를 구현하는 방법을 배울 것입니다.
이 예제를 이해하기 위해 다음을 이해해야 합니다}}Java 프로그래밍주제:
class Test { //사적인 생성자를 생성합니다 private Test() { System.out.println("이것은 사적인 생성자입니다."); } //공개적인 정적 메서드를 생성합니다 public static void instanceMethod() { //Test 클래스의 인스턴스를 생성합니다 Test obj = new Test(); } } class Main { public static void main(String[] args) { //instanceMethod() 호출 Test.instanceMethod(); } }
출력 결과
이것은 사적인 생성자입니다.
위의 예제에서는 Test 클래스의 사적인 생성자를 생성했습니다. 따라서 Test 클래스 외부에서는 이 클래스의 객체를 생성할 수 없습니다.
따라서 우리는 클래스 내부에 'instanceMethod()'라는 공개적인 정적 메서드를 생성했습니다. 이 메서드는 Test 클래스의 객체를 생성합니다. Main 클래스에서는 클래스 이름을 사용하여 이 메서드를 호출합니다.
Java 싱글턴 디자인 패턴은 클래스가 하나의 인스턴스만 가지도록 보장합니다. 이를 위해 사적인 생성자를 사용합니다.
class Language { //클래스 타입의 공개적인 정적 변수를 생성합니다 private static Language language; //사적인 생성자 private Language() { System.out.println("내부 사적인 생성자"); } //공개적인 정적 메서드 public static Language getInstance() { //객체를 생성합니다(생성되지 않았다면) if(language == null) { language = new Language(); } //싱글턴 객체를 반환합니다 return language; } public void display() { System.out.println("싱글턴 패턴을 구현했습니다"); } } class Main { public static void main(String[] args) { Language db1; //getInstance() 메서드를 호출합니다 db1= Language.getInstance(); db1.display(); } }
출력 결과
내부 사적인 생성자 싱글턴 패턴을 구현했습니다
위의 예제에서는 'Languages'라는 클래스를 생성했습니다. 이 클래스는 다음과 같습니다:
language - 클래스 타입 private 변수
Language() - private 생성자
getInstance() - public static 클래스 메서드
display() - public 메서드
생성자가 사적인 것인 데다가, 우리는 외부 클래스에서 Language 객체를 생성할 수 없기 때문에. 따라서, getInstance() 메서드 내에서 이 클래스의 객체를 생성했습니다.
하지만, 우리는 단 하나의 객체 만 생성하는 조건을 설정했습니다. 그리고 이 메서드는 객체를 반환합니다.
이 줄을 주목하십시오
db1 = Language.getInstance();
이곳에서
db1 Language 타입의 변수
Language.getInstance() - 메서드 호출하기
getInstance()는 Language 클래스의 객체를 반환하기 때문에 db1변수는 반환된 객체를 할당했습니다.
마지막으로, 우리는 객체를 사용하여 display() 메서드를 호출했습니다.