[자바] 생성자

Gammi·2022년 9월 29일
0

JAVA

목록 보기
5/35
post-thumbnail

📂 생성자(Constructor)


  • 클래스를 사용하여 인스턴스 생성 시 호출되는 메서드 형태

    -> new 키워드 뒤에 생성자 호출 코드 기술됨

  • 인스턴스 변수 초기화 또는 인스턴스 생성 시 초기에 수행할 작업 기술 용도

    -> 객체 생성 시 기본적으로 가져야하는 값 설정

    -> 객체가 기본적으로 가져야 할 공통적인 값을 설정


  • 메서드와 형태가 유사하나 차이점 존재

    -> 선언부에 리턴타입이 없음(리턴 타입 자체를 기술하지 않음)

    -> 생성자 이름이 클래스 이름과 동일

  • 파라미터가 있을 수도 있고 없을 수도 있음

  • 클래스 정의 시 생성자를 하나도 정의하지 않을 경우 컴파일러에 의해 자동으로 기본(Default) 생성자가 생성됨

    -> 기본생성자는 접근제한자가 클래스와 같고, 이름은 클래스 이름과 같음

    (리턴타입X, 매개변수X, 중괄호 블록 내에 수행할 코드X)


  • 별도로 호출할 수 없으며, 반드시 new 키워드 뒤에만 지정 가능


< 생성자 정의 기본 문법 >

[접근제한자] 클래스명 ([매개변수 선언...]) {
	// 생성자 호출 시점에 수행할 작업을 기술
    // 인스턴스 변수 초기화 등
}

< 인스턴스 생성 기본 문법 >

클래스명 참조변수명 = new 생성자명([데이터...]);





📂 파라미터 생성자


  • 생성자 호출 시점에서 전달해야 할 데이터가 있을 경우 생성자 파라미터(매개변수) 선언 가능

    = 메서드와 동일

  • 전달받은 데이터는 인스턴스 변수 초기화 용도로 사용

    -> 객체마다 다른 데이터를 가진 채로 인스턴스를 생성하기 위해 사용


< 파라미터 생성자 정의 기본 문법 >

[접근제한자] 클래스명(매개변수 선언...) {
	인스턴스 변수명 = 데이터;
    // 생성자 호출 시점에 파라미터에 데이터를 전달하여 
    // 인스턴스 내의 인스턴스 변수 초기화
}

🔗 참고

파라미터 생성자 자동 생성 단축키
Alt + Shift + S -> O
(멤버 변수가 하나도 없을 경우에는 자동 생성창 실행되지 않음)


public static void main(String[] args) {
	Person p = new Person(); // 인스턴스 생성
    // 만약에 기본 생성자를 정의하지 않고
    // 파라미터 생성자를 하나라도 정의했다면
    // 컴파일러에 의해 기본 생성자가 자동 생성되지 않기 때문에
    // 기본 생성자를 호출할 수 없음
    // 지금은 Person 클래스에 기본 생성자를 정의했기 때문에 사용 가능
    Person p2 = new Person("홍길동", 20);
    // 파라미터 생성자는 매개변수를 선언해줘야 오류 발생하지 않음

}
class Person {
	String name;
    int age;
    
	public Person() {} // 기본 생성자
    
    public Person(String name, int age) { // 파라미터 생성자
        this.name = name;
        this.age = age;
    }
}
profile
개발자가 되었어요⭐️

0개의 댓글