Java의 Private Constructor: 예제와 함께 설명된 사용 사례

게시 됨: 2021-04-09

목차

소개

Java private 생성자는 객체 생성을 제한하는 데 사용됩니다. 정적 멤버 전용 클래스에서 사용되는 특수 인스턴스 생성자입니다. 생성자가 private로 선언된 경우 해당 개체는 선언된 클래스 내에서만 액세스할 수 있습니다. 생성자 클래스 외부에서 해당 개체에 액세스할 수 없습니다.

개인 생성자 사용 사례

Javaprivate 생성자 는 클래스 내에서만 액세스할 수 있습니다. 다른 클래스에서 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 생성자는 클래스의 클라이언트 개체에서 직접 호출할 수 없습니다. 그것들은 클래스의 메서드에 의해서만 내부적으로 호출될 수 있습니다(비공개라도). 하나 이상의 매개변수가 있는 개인 생성자를 가질 수 있습니다. 생성자의 반환 유형이 기본 부울일 수 없습니다. 문자열 또는 클래스일 수 있습니다.