Java의 Private Constructor: 예제와 함께 설명된 사용 사례
게시 됨: 2021-04-09목차
소개
Java 의 private 생성자는 객체 생성을 제한하는 데 사용됩니다. 정적 멤버 전용 클래스에서 사용되는 특수 인스턴스 생성자입니다. 생성자가 private로 선언된 경우 해당 개체는 선언된 클래스 내에서만 액세스할 수 있습니다. 생성자 클래스 외부에서 해당 개체에 액세스할 수 없습니다.
개인 생성자 사용 사례
Java 의 private 생성자 는 클래스 내에서만 액세스할 수 있습니다. 다른 클래스에서 private 생성자에 액세스할 수 없습니다. 객체가 아직 초기화되지 않은 경우 개인 강사를 호출하는 공개 함수를 작성할 수 있습니다. 객체가 이미 초기화된 경우 해당 객체의 인스턴스만 반환할 수 있습니다. Java 의 private 생성자 는 다음과 같은 사용 사례를 가집니다.
- 정적 멤버 전용 클래스와 함께 사용할 수 있습니다.
- 정적 유틸리티 또는 상수 클래스 와 함께 사용할 수 있습니다 .
- 싱글톤 클래스를 제공하는 데 사용할 수 있습니다.
- 이를 사용하여 이름을 지정할 수 있습니다(예: 팩토리 메소드를 사용하여 생성).
- 이를 사용하여 하위 분류를 방지할 수 있습니다.
싱글톤 클래스
Java 의 private 생성자 는 싱글톤 클래스를 만드는 데 사용됩니다. 싱글톤 클래스는 선언된 클래스의 개체 수를 하나로 제한하는 Java의 클래스입니다. Java 의 private 생성자 는 한 번에 하나의 객체만 생성되도록 합니다. 선언된 클래스 외부에서 클래스 인스턴스를 생성할 수 없도록 선언된 클래스 내의 클래스 인스턴스를 제한합니다. 네트워킹 및 데이터베이스 연결 개념에서 싱글톤 클래스를 사용할 수 있습니다.
예제 1: 다음 예제에서는 Java의 private 생성자 가 싱글톤 클래스의 개체 수를 제한하는 방법을 보여줍니다.
가져오기 java.io.*; 클래스 newTestClass { 정적 newTestClass 개체 = null; 공개 정수 = 20; 비공개 newTestClass() { } // 우리는 private 생성자를 만들었습니다. 정적 공개 newTestClass displayInstance() /** *displayInstance()는 인스턴스를 생성하는 데 사용할 공개 메서드입니다. *클래스 외부에서 이러한 인스턴스에 액세스하려면 이 메소드를 호출하십시오. */ { if (객체 == null) 개체 = 새로운 newTestClass(); //싱글톤 클래스 객체 생성 반환 객체; } } 공개 클래스 SingletonClass { 공개 정적 무효 메인(문자열 인수[]) { newTestClass instance1 = newTestClass.displayInstance(); // public 메소드를 호출하여 싱글톤 클래스의 인스턴스 표시 newTestClass instance2 = newTestClass.displayInstance(); // public 메소드를 호출하여 싱글톤 클래스의 인스턴스 표시 instance1.a = instance1.a + 26; System.out.println("생성된 인스턴스 1은 다음 값을 가집니다 = " + instance1.a); System.out.println("생성된 인스턴스 2는 다음 값을 가집니다 = " + instance2.a); } } |
산출
생성된 인스턴스 1의 값은 46입니다. 생성된 인스턴스 2는 다음 값을 가집니다 = 46 |
위의 프로그램에서 instance1 객체 값을 업데이트하면 instance 2의 값이 자동으로 업데이트 됩니다. 이 관찰은 instance1과 instance 2가 모두 동일한 객체를 참조한다는 것을 보여줍니다.
예 2: 다음 예는 Java의 개인 생성자 가 한 번에 하나 이상의 객체를 생성하지 않도록 하는 방법을 보여줍니다.
// 싱글톤 클래스 구현을 위한 자바 프로그램 가져오기 java.io.*; 공개 클래스 newTestClass { 개인 정적 newTestClass var=null; 비공개 newTestClass(){ //Private Constructor는 클래스 내에서 액세스할 수 있습니다. } 공개 정적 newTestClass testObject(){ // 이 메서드는 한 번에 하나의 객체만 생성되도록 합니다. if(var==null){ var= 새로운 newTestClass(); } 반환 변수; } 공개 무효 표시(){ System.out.println("이것은 Singleton 클래스를 사용하는 Private 생성자의 예입니다. "); } 공개 정적 무효 메인(문자열 인수[]){ newTestClass newObject= newTestClass.testObject(); newObject.디스플레이(); } } |
산출
이것은 Singleton 클래스를 사용하는 Private 생성자의 예입니다.
예제 2: 클래스 인스턴스의 수를 제한하기 위한 Java의 Private 생성자 .
이 예제에서는 생성자를 private로 선언하여 클래스 인스턴스의 수를 제한하는 방법을 보여줍니다.
공개 클래스 제한 인스턴스 생성 클래스 { 공개 정적 무효 메인(문자열[] 인수) { 제한 인스턴스 개체; 정수 a = 1; 동안(a<=20) { obj = RestrictInstance.getLimInstance(); ++; } } } 클래스 제한 인스턴스 { 공개 정적 정수 varCount = 0; /** * count를 증가시키는 private 생성자 생성 *각 인스턴스 생성 후의 varCount 변수 */ 비공개 RestrictInstance() { 변수 개수++; System.out.println("인스턴스 번호 " + varCount + "가 생성되었습니다."); }
공개 정적 동기화 RestrictInstance getLimInstance() { if(varCount <5) { 새로운 RestrictInstance()를 반환합니다. } System.out.println("최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다."); System.gc(); null을 반환합니다. } /** * 인스턴스를 삭제하고 개수를 줄입니다. *varCount 변수의 */ 공개 무효 finalise() { System.out.println("인스턴스가 삭제되었습니다."); varCount-; }} |
산출
인스턴스 번호 1이 생성됩니다. 인스턴스 번호 2가 생성됩니다. 인스턴스 번호 3이 생성됩니다. 인스턴스 번호 4가 생성됩니다. 인스턴스 번호 5가 생성됩니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 인스턴스가 삭제됩니다. 인스턴스가 삭제됩니다. 인스턴스가 삭제됩니다. 인스턴스가 삭제됩니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 인스턴스 번호 1이 생성됩니다. 인스턴스 번호 2가 생성됩니다. 인스턴스 번호 3이 생성됩니다. 인스턴스 번호 4가 생성됩니다. 인스턴스 번호 5가 생성됩니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 최대 인스턴스 제한에 도달했습니다. 더 이상 인스턴스를 생성할 수 없습니다. 인스턴스가 삭제됩니다. 인스턴스가 삭제됩니다. 인스턴스가 삭제됩니다. 인스턴스 번호 1이 생성됩니다. 인스턴스 번호 2가 생성됩니다. 인스턴스 번호 3이 생성됩니다. 인스턴스 번호 4가 생성됩니다. 인스턴스 번호 5가 생성됩니다. |
세계 최고의 대학에서 온라인으로 소프트웨어 과정을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
결론
기사에 사용된 코드는 설명을 위한 것입니다. 요구 사항에 따라 예제에 제공된 명령문을 수정할 수 있습니다. 이 블로그 에서 Java의 private 생성자 가 싱글톤 클래스의 개체 수를 제한하는 방법에 대해 설명했습니다.
코드를 사용해 Java 생성자의 지식을 강화할 수 있습니다. Java에 대한 심층적인 이해를 원하신다면 전문가가 이 분야의 전문 지식을 습득할 수 있도록 설계된 Full Stack Development 과정의 upGrad Executive PG Program을 확인하십시오.
프로그래밍에서 생성자는 무엇입니까?
프로그래밍에서 생성자는 객체가 초기화될 때 자동으로 호출되는 메서드입니다. 생성자의 목적은 객체를 초기화하는 것입니다. 생성자는 항상 public이어야 하며 반환 유형 없이 선언됩니다. 생성자는 개체를 초기화하고 한 번만 수행할 수 있는 다른 작업을 수행하는 데 사용됩니다. 생성자는 클래스 초기화, 즉 클래스를 생성하는 작업을 수행하는 데에도 사용됩니다.
Java에서 생성자의 유형은 무엇입니까?
Java에는 5가지 유형의 생성자가 있습니다. 인수가 없는 생성자: 클래스가 메모리에 로드될 때 실행되는 기본 구현이 있습니다. 인수가 없는 생성자가 없는 클래스는 final로 선언되어야 합니다(MUST). 기본 생성자: 이 생성자는 클래스가 Java로 작성될 때 생성되며 모든 클래스의 변수(속성)를 기본값(0 또는 null)으로 초기화하는 데 사용됩니다. 매개변수화된 생성자: 이 생성자는 일부 값에서 일부 변수를 초기화하는 데 사용됩니다. 반환 값이 없는 생성자: 일부 값에서 일부 변수를 초기화하는 데 사용됩니다. 반환 값이 있는 생성자: 일부 값에서 일부 변수를 초기화하는 데 사용되며 값을 반환하기도 합니다.
Java에서 개인 생성자란 무엇입니까?
개인 생성자를 사용하여 변경할 수 없는 클래스를 만들 수 있습니다. private 생성자를 사용하지 않고 final 클래스를 선언하고 모든 속성을 final로 생성함으로써 불변 클래스를 생성할 수 있습니다(예: private final String name;). private 생성자는 클래스의 클라이언트 개체에서 직접 호출할 수 없습니다. 그것들은 클래스의 메서드에 의해서만 내부적으로 호출될 수 있습니다(비공개라도). 하나 이상의 매개변수가 있는 개인 생성자를 가질 수 있습니다. 생성자의 반환 유형이 기본 부울일 수 없습니다. 문자열 또는 클래스일 수 있습니다.