Java 생성자 또는 Java의 생성자는 프로그램에서 무언가를 구성하는 데 사용되는 용어입니다. Java의 생성자는 특별한 방법 객체를 초기화하는 데 사용됩니다. 생성자는 클래스의 객체가 생성될 때 호출됩니다. 객체 속성의 초기 값을 설정하는 데 사용할 수 있습니다.
Java의 생성자는 무엇입니까?
Java에서 생성자는 메소드와 유사한 코드 블록입니다. 클래스의 인스턴스가 생성될 때 호출됩니다. 생성자를 호출할 때 객체에 대한 메모리가 메모리에 할당됩니다. 객체를 초기화하는 데 사용되는 특별한 유형의 메소드입니다. new() 키워드를 사용하여 객체를 생성할 때마다 적어도 하나의 생성자가 호출됩니다.
Java 생성자의 예
다음은 Java 생성자의 구현입니다.
자바 // Java Program to demonstrate // Constructor import java.io.*; // Driver Class class Geeks { // Constructor Geeks() { super(); System.out.println('Constructor Called'); } // main function public static void main(String[] args) { Geeks geek = new Geeks(); } }>
산출
Constructor Called>
메모: 클래스에 대한 생성자를 작성할 필요는 없습니다. 이는 클래스에 아무것도 없는 경우 Java 컴파일러가 기본 생성자(인수 없는 생성자)를 생성하기 때문입니다.
Java 생성자는 Java 메소드와 어떻게 다른가요?
- 생성자는 정의된 클래스와 동일한 이름을 가져야 하며 Java의 메소드에는 필요하지 않습니다.
- 메소드가 반환 유형을 갖고 있는 동안 생성자는 어떤 유형도 반환하지 않습니다. 무효의 if는 어떤 값도 반환하지 않습니다.
- 생성자는 객체 생성 시 한 번만 호출되지만 메서드는 여러 번 호출할 수 있습니다.
이제 객체나 인스턴스 생성 시 호출되는 생성자의 구문을 살펴보겠습니다.
class Geek { ....... // A Constructor Geek() { } ....... } // We can create an object of the above class // using the below statement. This statement // calls above constructor. Geek obj = new Geek();>
생성자의 첫 번째 줄은 super() 또는 this()에 대한 호출입니다(수퍼클래스의 생성자 또는 오버로드된 생성자에 대한 호출). 생성자에 super에 대한 호출을 입력하지 않은 경우 컴파일러는 코드의 첫 번째 줄에서 인수 없이 super에 대한 호출을 제공합니다. 객체를 생성하려면 슈퍼 생성자를 호출해야 합니다.
자바 튜토리얼
클래스가 하위 클래스가 아니라고 생각한다면 실제로는 Java의 모든 클래스가 클래스의 하위 클래스입니다. 물체 클래스 정의에서 객체 확장을 말하지 않더라도 말이죠.
Java에서 생성자의 필요성
상자를 생각해 보세요. 박스 클래스에 대해 말하면 클래스 변수(예: 길이, 너비, 높이)가 있습니다. 그러나 객체를 생성할 때(즉, 이제 Box가 컴퓨터 메모리에 존재하게 됩니다) 치수에 대해 정의된 값이 없는 상자가 존재할 수 있습니까? 답은 N이다 영형 .
따라서 생성자는 객체 생성 시 프로그래머에 의해 명시적으로 수행되거나 Java 자체(기본 생성자)에 의해 클래스 변수에 값을 할당하는 데 사용됩니다.
Java 생성자가 호출될 때?
객체를 사용하여 객체가 생성될 때마다 새로운() 키워드에 초기 값을 할당하기 위해 적어도 하나의 생성자(기본 생성자일 수 있음)가 호출됩니다. 데이터 멤버 같은 수업의. 생성자 작성 규칙은 다음과 같습니다.
- 클래스의 생성자는 해당 생성자가 있는 클래스 이름과 동일한 이름을 가져야 합니다.
- Java의 생성자는 추상, 최종, 정적 또는 동기화될 수 없습니다.
- 액세스 한정자는 생성자 선언에서 액세스를 제어하는 데 사용할 수 있습니다. 즉, 다른 클래스가 생성자를 호출할 수 있습니다.
지금까지 우리는 생성자가 객체의 상태를 초기화하는 데 사용된다는 것을 배웠습니다. 좋다 행동 양식 , 생성자에는 객체 생성 시 실행되는 명령문(예: 명령어) 모음도 포함되어 있습니다.
Java의 생성자 유형
이제 생성자의 유형을 논의할 적절한 시기입니다. 따라서 주로 Java에는 세 가지 유형의 생성자가 아래에 언급되어 있습니다.
- 기본 생성자
- 매개변수화된 생성자
- 복사 생성자
1. Java의 기본 생성자
매개변수가 없는 생성자를 기본 생성자라고 합니다. 기본 생성자는 보이지 않습니다. 그리고 인수 없이 생성자를 작성하면 컴파일러는 기본 생성자를 생성하지 않습니다. 꺼내집니다. 오버로드되고 있으며 매개변수화된 생성자라고 합니다. 기본 생성자가 매개변수화된 생성자로 변경되었습니다. 하지만 매개변수화된 생성자는 기본 생성자를 변경할 수 없습니다. 기본 생성자는 암시적이거나 명시적일 수 있습니다. 명시적으로 정의하지 않으면 암시적인 기본 생성자를 얻습니다. 생성자를 수동으로 작성하면 암시적 생성자가 재정의됩니다.
캐치 캐치 자바를 시도해 보세요
예:
자바 // Java Program to demonstrate // Default Constructor import java.io.*; // Driver class class GFG { // Default Constructor GFG() { System.out.println('Default constructor'); } // Driver function public static void main(String[] args) { GFG hello = new GFG(); } }>
산출
Default constructor>
메모: 기본 생성자는 유형에 따라 0, null 등과 같은 기본값을 객체에 제공합니다.
2. Java의 매개변수화된 생성자
매개변수가 있는 생성자를 매개변수화된 생성자라고 합니다. 클래스의 필드를 자체 값으로 초기화하려면 매개변수화된 생성자를 사용하세요.
예:
자바 // Java Program for Parameterized Constructor import java.io.*; class Geek { // data members of the class. String name; int id; Geek(String name, int id) { this.name = name; this.id = id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); } }>
산출
GeekName :Avinash and GeekId :68>
기억하세요: 생성자는 어떤 값도 반환하나요?
얇은 알고리즘생성자에는 반환 값 문이 없지만 생성자는 현재 클래스 인스턴스를 반환합니다. 생성자 안에 'return'을 쓸 수 있습니다.
이제 가장 중요한 주제는 생성자 오버로딩으로 알려진 생성자와 OOPS를 강력하게 통합하는 것입니다. 메소드와 마찬가지로 다양한 방식으로 객체를 생성하기 위한 생성자를 오버로드할 수 있습니다. 컴파일러는 매개변수 수, 매개변수 유형 및 매개변수 순서를 기준으로 생성자를 구별합니다.
예:
자바 // Java Program to illustrate constructor overloading // using same task (addition operation ) for different // types of arguments. import java.io.*; class Geek { // constructor with one argument Geek(String name) { System.out.println('Constructor with one ' + 'argument - String : ' + name); } // constructor with two arguments Geek(String name, int age) { System.out.println( 'Constructor with two arguments : ' + ' String and Integer : ' + name + ' ' + age); } // Constructor with one argument but with different // type than previous.. Geek(long id) { System.out.println( 'Constructor with one argument : ' + 'Long : ' + id); } } class GFG { public static void main(String[] args) { // Creating the objects of the class named 'Geek' // by passing different arguments // Invoke the constructor with one argument of // type 'String'. Geek geek2 = new Geek('Shikhar'); // Invoke the constructor with two arguments Geek geek3 = new Geek('Dharmesh', 26); // Invoke the constructor with one argument of // type 'Long'. Geek geek4 = new Geek(325614567); } }>
산출
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>
3. Java의 복사 생성자
다른 생성자와 달리 복사 생성자는 전달된 객체에서 사용 가능한 데이터를 새로 생성된 객체에 복사하는 다른 객체와 함께 전달됩니다.
메모: Java에서는 C++와 같은 다른 프로그래밍 언어처럼 사용 가능한 내장 복사 생성자가 없습니다. 대신 동일한 클래스의 객체를 클래스의 다른 인스턴스(객체)에 전달하여 자체 복사 생성자를 만들 수 있습니다.
예:
자바 가상 머신자바
// Java Program for Copy Constructor import java.io.*; class Geek { // data members of the class. String name; int id; // Parameterized Constructor Geek(String name, int id) { this.name = name; this.id = id; } // Copy Constructor Geek(Geek obj2) { this.name = obj2.name; this.id = obj2.id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. System.out.println('First Object'); Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); System.out.println(); // This would invoke the copy constructor. Geek geek2 = new Geek(geek1); System.out.println( 'Copy Constructor used Second Object'); System.out.println('GeekName :' + geek2.name + ' and GeekId :' + geek2.id); } }>
산출
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>
생성자에 대해 자세히 알기 위해 아래 나열된 두 가지 개념이 널리 사용되었습니다.
- 생성자 체이닝
- 복사 생성자
Java 생성자 FAQ
1. Java의 생성자란 무엇입니까?
Java의 생성자는 특별한 방법 객체를 초기화하는 데 사용됩니다.
2. Java 생성자는 비공개일 수 있나요?
예, 생성자를 비공개로 선언할 수 있습니다. 개인 생성자는 개체 생성을 제한하는 데 사용됩니다.