logo

Java의 생성자

  1. 생성자의 유형
    1. 기본 생성자
    2. 매개변수화된 생성자
  2. 생성자 오버로딩
  3. 생성자는 어떤 값을 반환합니까?
  4. 한 개체의 값을 다른 개체에 복사
  5. 생성자가 초기화 대신 다른 작업을 수행합니까?

~ 안에 자바 에서 생성자는 메서드와 유사한 코드 블록입니다. 인스턴스가 호출될 때 호출됩니다. 수업 생성됩니다. 생성자를 호출할 때 객체에 대한 메모리가 메모리에 할당됩니다.

객체를 초기화하는 데 사용되는 특별한 유형의 메소드입니다.

new() 키워드를 사용하여 객체를 생성할 때마다 적어도 하나의 생성자가 호출됩니다.

클래스에 사용 가능한 생성자가 없으면 기본 생성자를 호출합니다. 이러한 경우 Java 컴파일러는 기본적으로 기본 생성자를 제공합니다.

Java에는 인수가 없는 생성자와 매개변수가 있는 생성자의 두 가지 유형의 생성자가 있습니다.

메모: 객체 생성 시 값을 구성하기 때문에 생성자라고 합니다. 클래스에 대한 생성자를 작성할 필요는 없습니다. 이는 클래스에 기본 생성자가 없는 경우 Java 컴파일러가 기본 생성자를 생성하기 때문입니다.

Java 생성자 생성 규칙

생성자에는 두 가지 규칙이 정의되어 있습니다.

자바 이스케이프 문자
  1. 생성자 이름은 클래스 이름과 동일해야 합니다.
  2. 생성자에는 명시적인 반환 유형이 없어야 합니다.
  3. Java 생성자는 추상, 정적, 최종 및 동기화될 수 없습니다.

참고: 우리는 사용할 수 있습니다 액세스 수정자 생성자를 선언하는 동안. 객체 생성을 제어합니다. 즉, Java에서는 개인, 보호, 공개 또는 기본 생성자를 가질 수 있습니다.

Java 생성자의 유형

Java에는 두 가지 유형의 생성자가 있습니다.

  1. 기본 생성자(인수 없는 생성자)
  2. 매개변수화된 생성자
자바 생성자

Java 기본 생성자

매개변수가 없는 생성자를 '기본 생성자'라고 합니다.

기본 생성자의 구문:

 (){} 

기본 생성자의 예

이 예에서는 Bike 클래스에 인수가 없는 생성자를 만듭니다. 객체 생성 시 호출됩니다.
 //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(); } } 
지금 테스트해보세요

산출:

 Bike is created 

규칙: 클래스에 생성자가 없으면 컴파일러는 자동으로 기본 생성자를 만듭니다.

Java 기본 생성자

Q) 기본 생성자의 목적은 무엇인가요?

기본 생성자는 유형에 따라 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 0 null 

설명: 위 클래스에서는 생성자를 생성하지 않으므로 컴파일러가 기본 생성자를 제공합니다. 여기서는 0과 null 값이 기본 생성자에 의해 제공됩니다.


Java 매개변수화된 생성자

특정 개수의 매개변수를 갖는 생성자를 매개변수화된 생성자라고 합니다.

매개변수화된 생성자를 사용하는 이유는 무엇입니까?

매개변수화된 생성자는 개별 객체에 다양한 값을 제공하는 데 사용됩니다. 그러나 동일한 값을 제공할 수도 있습니다.

매개변수화된 생성자의 예

이 예에서는 두 개의 매개변수가 있는 Student 클래스의 생성자를 만들었습니다. 생성자에는 여러 개의 매개변수를 가질 수 있습니다.

 //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(); } } 
지금 테스트해보세요

산출:

 111 Karan 222 Aryan 

Java의 생성자 오버로딩

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(); } } 
지금 테스트해보세요

산출:

 111 Karan 0 222 Aryan 25 

Java의 생성자와 메소드의 차이점

생성자와 메서드에는 많은 차이점이 있습니다. 아래에 나와 있습니다.

자바 생성자자바 방법
생성자는 객체의 상태를 초기화하는 데 사용됩니다.메소드는 객체의 동작을 노출하는 데 사용됩니다.
생성자에는 반환 유형이 없어야 합니다.메서드에는 반환 유형이 있어야 합니다.
생성자는 암시적으로 호출됩니다.메서드가 명시적으로 호출됩니다.
Java 컴파일러는 클래스에 생성자가 없는 경우 기본 생성자를 제공합니다.어떤 경우에도 컴파일러는 메서드를 제공하지 않습니다.
생성자 이름은 클래스 이름과 동일해야 합니다.메소드 이름은 클래스 이름과 같을 수도 있고 아닐 수도 있습니다.

Java 생성자와 메소드

자바 복사 생성자

Java에는 복사 생성자가 없습니다. 그러나 C++의 복사 생성자와 같이 한 개체에서 다른 개체로 값을 복사할 수 있습니다.

Java에서는 한 객체의 값을 다른 객체로 복사하는 방법이 많이 있습니다. 그들은:

  • 생성자별
  • 한 객체의 값을 다른 객체에 할당함으로써
  • Object 클래스의 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(); } } 
지금 테스트해보세요

산출:

 111 Karan 111 Karan 

생성자 없이 값 복사

개체 값을 다른 개체에 할당하여 한 개체의 값을 다른 개체에 복사할 수 있습니다. 이 경우 생성자를 만들 필요가 없습니다.

 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(); } } 
지금 테스트해보세요

산출:

 111 Karan 111 Karan 

Q) 생성자는 어떤 값을 반환합니까?

예, 현재 클래스 인스턴스입니다(반환 유형을 사용할 수는 없지만 값을 반환합니다).

문자열 형식화 자바

생성자가 초기화 대신 다른 작업을 수행할 수 있나요?

예, 객체 생성, 스레드 시작, 메서드 호출 등과 같은 작업을 메서드에서 수행하는 것처럼 생성자에서도 수행할 수 있습니다.


Java에 생성자 클래스가 있습니까?

예.


생성자 클래스의 목적은 무엇입니까?

Java는 클래스에서 생성자의 내부 정보를 가져오는 데 사용할 수 있는 생성자 클래스를 제공합니다. 이는 java.lang.reflect 패키지에 있습니다.