새소식

프로그래밍 언어/JAVA

자바 기초 - 생성자

  • -

생성자 (Constructor)


생성자란 말 그대로 무언가를 생성하는 녀석을 의미합니다.

 

자바에서 무언가는 바로 객체를 의미합니다. 즉, 객체를 생성해 주는 녀석이라 생각하면 됩니다.

 

📌 사용법


사용법은 메서드와 거의 동일합니다만 메서드 명이 클래스 자기 자신이라는 것에 차이가 있습니다.

 

객체는 new 키워드와 함께 생성자를 호출하면 생성됩니다.

 

// 객체 생성!
Person person = new Person();

// 예시 클래스
public class Person{}

 

위에서 보면 클래스에 아무것도 없는데도 객체가 생성되었습니다.

 

이게 왜그러냐면 클래스에 기본 생성자가 없으면 컴파일러가 기본 생성자를 제공하기 때문입니다.

 

public class Person{
	// 생성자 문법
    // 접근제한자 클래스명 (타입 변수명...) { 멤버 변수 초기화 및 실행문}

	// 기본 생성자
    public Person(){
    	// 아무것도 없는 기본 생성자
    }
}

 

다만, 매개변수가 있는 생성자를 만드는 순간 기본 생성자는 자동적으로 생성되지 않습니다.

 

기본적으로 멤버 변수를 초기화하기 위해서 매개변수를 받는 경우, 다음과 같이 이름을 동일하게 해서 사용하되 this를 이용해서 사용하는 편입니다.

 

💡 this. 란 참조 변수로써 객체 자기 자신을 가리킵니다. 이를 통해 자신의 멤버에 접근 가능합니다.

 

public class Person {
	String name;
    int age;
    
    
    public Person(String name, int age){
    	this.name = name;
        this.age = age;
    }
}

 

생성자는 필요에 따라 여러 개를 가질 수 있으며, 접근 제어자를 통해 객체를 생성 못하게 막을 수도(싱글톤 패턴 등) 있습니다.

 

생성자를 여러개 만들때는 다음과 같이 오버로딩을 사용하기도 합니다.

 

public class Person {
	String name;
    int age;
    int height;
    
    
    private Person(String name){
    	this.name = name;
    }
    
    protected Person(String name, int age){
    	this(name); // this()는 자기자신의 생성자를 가리키며, 첫 줄에서만 사용 가능합니다.(두번째 줄 호출X)
        this.age = age;
    }
    
     public Person(String name, int height){
    	this(name,77); // 나이를 77로 기본값 부여
        this.height = height;
    }
    
}

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.