하루하루 살아남기

[Java / 자바] 생성자 본문

개발/Java

[Java / 자바] 생성자

막막이 2021. 3. 14. 19:37
반응형

생성자

 

생성자는 자바 클래스의 인스턴스가 생성될때 호출되는 특별한 함수입니다.

 

http://tutorials.jenkov.com/java/constructors.html

 

Java Constructors

A Java constructor is a special method that is called when you create an instance (object) of a Java class. The purpose of a Java constructor is to initialize the Java object before the object is used. This Java constructor tutorial explains how you declar

tutorials.jenkov.com

 

사용방법

    String string = new String();

new 키워드 다음에는 반드시 생성자가 나와야 합니다. 그렇다면 생성자는 어떻게 만드는 걸까요?

 

public class Constructor {
    
    public Constructor() {
        // ...
    }
}

 

public 클래스명(매개변수 목록) { (코드블록) } 의 형태로 구성됩니다. 일반적인 메서드는 public과 메서드명 사이에 리턴형(int 등)이 붙습니다. 반드시 클래스명(위의 경우 Constructor)과 일치해야 합니다. 위 코드는 직접 생성자를 만들었지만, 만들지 않았다면 매개변수가 없는 생성자가 자동으로 만들어집니다. 이 매개변수가 없는 생성자를 기본 생성자 라고 합니다. 만약 프로그래머가 생성자를 하나라도 만들었다면, 기본 생성자는 자동으로 만들어지지 않습니다.

 

 

public class Constructor {

    public static void main(String[] args) {
        
        Constructor constructor1 = new Constructor();
        
    }
}

 

Constructor 클래스는 생성자 함수를 만들지 않았음에도 아무런 에러를 발생시키지 않습니다. 자동으로 생성자 함수가 만들어진 것입니다. 기본 생성자 말고 매개변수를 받는 생성자를 만들어 보겠습니다. 이 생성자의 별명을 매개변수로 받는 생성자를 만드는 것으로 하겠습니다.

 

 

public class Constructor {

    String alias;

    public Constructor(String classAlias) {
        alias = classAlias;
    }

    public static void main(String[] args) {

        Constructor constructor1 = new Constructor();
        Constructor constructor2 = new Constructor("POWER");

    }
}

생성자를 하나 만들었는데, 11번째줄에서 에러가 납니다. 바로 생성자를 하나 만들었기때문에, 기본으로 만들어주는 매개변수가 없는 생성자를 만들지 않기 때문입니다. contructor1 매개변수를 다시 사용하고 싶다면 매개변수가 없는 생성자를 실제로 작성해주어야 합니다. 해당 라인을 주석처리하면 아무 문제없이 동작합니다. Constructor의 필드인 alias에 "POWER" 라는 문자열을 인스턴스화 하면서 대입하게 되는것입니다.

 

생성자와 메서드의 차이점

 

메서드는 그 객체가 할수 있는 기능을 정의합니다. 생성자는 생성시에 가질수 있는 초기값을 정의합니다. 예를 들어 동물이라는 객체가 있고 다리수를 뜻하는 leg 변수가 있다고 생각해보면, 동물마다 다리수는 다를수 있습니다. 이 때 다리수를 매개변수로 받는 생성자를 만들어주면, 각 객체가 만들어질때마다 다리수를 입력받을 수 있습니다. 

728x90
반응형
Comments