자바의 컨스트럭터
자바에서 생성자는 메소드와 유사한 코드 블록입니다. 클래스의 인스턴스가 생성되면 호출됩니다. 생성자를 호출할 때 객체에 대한 메모리가 메모리에 할당됩니다.
개체를 초기화하는 데 사용되는 특수한 유형의 메서드입니다.
new() 키워드를 사용하여 개체를 만들 때마다 하나 이상의 생성자가 호출됩니다.
클래스에 사용 가능한 생성자가 없는 경우 기본 생성자를 호출합니다. 이 경우 Java 컴파일러는 기본적으로 기본 생성자를 제공합니다.
Java에는 두 가지 유형의 생성자가 있습니다. 즉, no-arg 생성자와 매개 변수화된 생성자입니다.
참고: 개체 생성 시 값을 구성하기 때문에 생성자라고 합니다. 클래스에 생성자를 작성할 필요는 없습니다. 클래스에 기본 생성자가 없는 경우 Java 컴파일러가 기본 생성자를 만들기 때문입니다.
Java 생성자를 만드는 규칙
생성자에 대해 정의된 규칙은 두 가지입니다.
생성자 이름은 클래스 이름과 같아야 합니다.
생성자에는 명시적 반환 유형이 없어야 합니다.
Java 생성자는 추상, 정적, 최종 및 동기화할 수 없습니다.
생성자를 선언하는 동안 액세스 한정자를 사용할 수 있습니다. 개체 생성을 제어합니다. 즉, Java에서 개인, 보호, 공용 또는 기본 생성자를 사용할 수 있습니다.
Java 생성자의 유형
Java에는 두 가지 유형의 생성자가 있습니다.
기본 생성자(인수 생성자가 없음)입니다.
매개 변수화된 생성자입니다.
Java 기본 생성자
생성자에 매개 변수가 없는 경우 "기본 생성자"라고 합니다.
<class_name>(){}
이 예에서는 Bike 클래스에 no-arg 생성자를 만들고 있습니다. 개체 생성 시 호출됩니다.
//Java Program to create and call a default constructor
class Bike1{
//creating a default constructor
Bike1(){System.out.println("Bike is created");}
//main method
public static void main(String args[]){
//calling a default constructor
Bike1 b=new Bike1();
}
}
클래스에 생성자가 없는 경우 컴파일러는 자동으로 기본 생성자를 만듭니다.
기본 생성자는 유형에 따라 0, null 등의 기본값을 개체에 제공하는 데 사용됩니다.
기본값을 표시하는 기본 생성자 예제입니다.
//Let us see another example of default constructor
//which displays the default values
class Student3{
int id;
String name;
//method to display the value of id and name
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
//creating objects
Student3 s1=new Student3();
Student3 s2=new Student3();
//displaying values of the object
s1.display();
s2.display();
}
}
위 클래스에서는 생성자를 만들지 않으므로 컴파일러가 기본 생성자를 제공합니다. 여기서 0 및 null 값은 기본 생성자에 의해 제공됩니다.
Java 매개 변수화된 생성자
특정 개수의 매개 변수를 갖는 생성자를 매개 변수화된 생성자라고 합니다.
매개 변수화된 생성자는 고유한 개체에 서로 다른 값을 제공하는 데 사용됩니다. 그러나 동일한 값을 제공할 수도 있습니다.
이 예에서는 두 개의 매개 변수를 가진 학생 클래스의 생성자를 만들었습니다. 우리는 생성자에 임의의 수의 매개 변수를 가질 수 있습니다.
//Java Program to demonstrate the use of the parameterized constructor.
class Student4{
int id;
String name;
//creating a parameterized constructor
Student4(int i,String n){
id = i;
name = n;
}
//method to display the values
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
//creating objects and passing values
Student4 s1 = new Student4(111,"Karan");
Student4 s2 = new Student4(222,"Aryan");
//calling method to display the values of object
s1.display();
s2.display();
}
}
Java에서 생성자를 오버로드
자바에서 생성자는 메소드와 비슷하지만 반환 유형이 없습니다. 또한 자바 방식처럼 오버로드될 수 있습니다.
Java에서 생성자 오버로딩은 매개 변수 목록이 서로 다른 둘 이상의 생성자를 갖는 기술입니다. 각 생성자가 서로 다른 작업을 수행하는 방식으로 배열됩니다. 컴파일러는 목록의 매개 변수 수와 매개 변수 유형에 따라 구분됩니다.
/Java program to overload constructors
class Student5{
int id;
String name;
int age;
//creating two arg constructor
Student5(int i,String n){
id = i;
name = n;
}
//creating three arg constructor
Student5(int i,String n,int a){
id = i;
name = n;
age=a;
}
void display(){System.out.println(id+" "+name+" "+age);}
public static void main(String args[]){
Student5 s1 = new Student5(111,"Karan");
Student5 s2 = new Student5(222,"Aryan",25);
s1.display();
s2.display();
}
}
Java에서 생성자와 메서드의 차이
생성자와 방법 사이에는 많은 차이점이 있습니다. 아래에 제시되어 있습니다.
생성자 | 메소드 |
생성자는 개체 상태를 초기화하는 데 사용됩니다. | 메서드는 개체의 동작을 노출하는 데 사용됩니다. |
생성자에 반환 형식이 없어야 합니다. | 메서드에는 반환 형식이 있어야 합니다. |
생성자가 암시적으로 호출됩니다. | 메서드가 명시적으로 호출됩니다. |
클래스에 생성자가 없는 경우 Java 컴파일러는 기본 생성자를 제공합니다. | 메서드는 어떤 경우에도 컴파일러에 의해 제공되지 않습니다. |
생성자 이름은 클래스 이름과 같아야 합니다. | 메서드 이름이 클래스 이름과 같거나 같지 않을 수 있습니다. |
Java 복사 생성자
Java에 복사 생성자가 없습니다. 그러나 C++의 복사 생성자와 같이 한 개체에서 다른 개체로 값을 복사할 수 있습니다.
Java에서 한 개체의 값을 다른 개체로 복사하는 방법은 여러 가지가 있습니다. 다음과 같습니다.
- 생성자별
- 한 개체의 값을 다른 개체에 할당합니다.
- 개체 클래스의 clone() 메서드를 기준으로 합니다.
이 예에서는 Java 생성자를 사용하여 한 개체의 값을 다른 개체로 복사하려고 합니다.
//Java program to initialize the values from one object to another object.
class Student6{
int id;
String name;
//constructor to initialize integer and string
Student6(int i,String n){
id = i;
name = n;
}
//constructor to initialize another object
Student6(Student6 s){
id = s.id;
name =s.name;
}
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
Student6 s1 = new Student6(111,"Karan");
Student6 s2 = new Student6(s1);
s1.display();
s2.display();
}
}
생성자 없이 값을 복사
개체 값을 다른 개체에 할당하여 한 개체의 값을 다른 개체에 복사할 수 있습니다. 이 경우 생성자를 생성할 필요가 없습니다.
class Student7{
int id;
String name;
Student7(int i,String n){
id = i;
name = n;
}
Student7(){}
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
Student7 s1 = new Student7(111,"Karan");
Student7 s2 = new Student7();
s2.id=s1.id;
s2.name=s1.name;
s1.display();
s2.display();
}
}
Q) 생성자가 값을 반환합니까?
예, 현재 클래스 인스턴스입니다. 반환 형식을 사용할 수 없지만 값을 반환할 수 있습니다.
Q) 초기화 대신 생성자가 다른 작업을 수행할 수 있습니까?
예, 객체 생성, 스레드 시작, 메서드 호출 등의 작업을 수행합니다. 메소드에서 수행하는 대로 생성자에서 모든 작업을 수행할 수 있습니다.
Q) 자바에 컨스트럭터 클래스가 있나요?
네.
Q) 컨스트럭터 클래스의 목적은 무엇입니까?
Java는 클래스에 있는 생성자의 내부 정보를 가져오는 데 사용할 수 있는 생성자 클래스를 제공합니다. java.lang.reflect 패키지에 있습니다.
'SW > Java' 카테고리의 다른 글
RxJava 사용한 비동기 HTTP 요청 (0) | 2023.06.09 |
---|---|
Java : this 키워드 : 개념, 개요, 예제, 설명 (0) | 2023.02.28 |
Java : 자바 OOP 컨셉, 개념, 개요, 설명 (0) | 2023.02.22 |
Java : 자바 제어문, 제어흐름 : 개요, 개념, 설명 (0) | 2023.02.21 |
Java : 자바 키워드 : 개념, 개요, 설명 (0) | 2023.02.20 |