Programming/JAVA

[Java 자바] 생성자(Construnctor) 의미와 사용법

꼬ㄴi 2023. 9. 13. 23:58

❔생성자란? 

 

객체(인스턴스)를 새로 생성할 때 호출하는 메서드로,  객체의  변수들을 초기화하는 작업에 사용된다. 

생성자도 메서드이기 때문에 클래스 내부에서 선언 되어야 한다. 

 

 

 

🎲생성자의 조건 

1. 생성자의 이름은 클래스 이름과 동일해야 한다.
2. 생성자는 void 타입이다.
3. 모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야 한다.

 

 

📃생성자 선언 방법 

// 매개변수 O
[클래스명] (타입 변수명, 타입 변수명...){
    ...	
};

// 매개변수 X
[클래스명] (    ){
    ...
};

메서드 내부에는 객체가 생성될 때 수행될 코드를 적는다.

 

그런데, 생성자는 void 타입인데 왜 이름 앞에 void를 붙이지 않는가?

메서드 앞에 리턴 타입을 붙이는 것이 원칙이지만, 모든 생성자는 리턴값이 없으므로 void 의 생략이 가능하다.

 

 

 

📂기본 생성자(Default Constructor)

 

모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야 하는데, 따로 정의하지 않은 경우에도 객체 생성이 가능했을 것이다.

이는 컴파일러가 기본적으로 제공하는 생성자 덕분이다. 이를 기본 생성자 라고 한다.

 

기본 생성자는 매개변수와 명령문을 가지지 않는다. 

따라서 객체 생성시 특별한 초기화가 필요하지 않다면, 생성자를 따로 정의하지 않고 기본 생성자를 사용해도 상관 없다.

[클래스명] (   ) {   };

 

 

 

📕생성자 사용법

class Book{
    String title;
    String author;
}

public class Main{
    public static void main(String[] args) {
         Book book = new Book(  );
         
         book.title = "찰리와 초콜릿 공장";
         book.autor = "로알드 달";
    }
}

Book 클래스에 생성자를 따로 선언하지 않고,

기본 생성자로 객체를 만들어서 변수에 따로따로 값을 할당해주어야 한다.

 

 

이 때 Book 클래스에 별도의 생성자가 있다면, title과 author 변수값의 할당 작업을 편리하게 할 수 있다.

class Book{
    String title;
    String author;
    
    Book(String x, String y){
        title = x;
        author = y;
    }
}

public class Main{
    public static void main(String[] args) {
         Book book = new Book("찰리와 초콜릿 공장", "로알드 달");
    }
}