SW/Java

Java : 자바 생성자 : 개념, 예제, 개요, 설명

얇은생각 2023. 2. 26. 07:30
반응형

Java : 자바 생성자 : 개념, 예제, 개요, 설명 1

 

 

 

자바의 컨스트럭터

자바에서 생성자는 메소드와 유사한 코드 블록입니다. 클래스의 인스턴스가 생성되면 호출됩니다. 생성자를 호출할 때 객체에 대한 메모리가 메모리에 할당됩니다.

개체를 초기화하는 데 사용되는 특수한 유형의 메서드입니다.

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 패키지에 있습니다.

반응형