생성자

develop.u·2022년 9월 15일
0

<1> 생성자란?

  • new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드
  • 리턴형을 명시하지 않음
  • 클래스와 이름이 동일

왜 사용할까?

  • 객체가 생성되면서 해당 객체의 특성을 초기화
    하기 위하여 사용
    (ex. 멤버변수의 초기값을 할당하는 용도)

    → 객체가 생성될 때 자동으로 실행된다는 특성 때문

📝 형식

class User{
	User(){		// 생성자
		... // 이 안은 객체가 생성될 때 자동으로 호출됨
	}
}
    
public class Main01 {

	public static void main(String[] args) {
    	User user = new User();
        // User(); → 생성자 호출
    }
}

🖥️ 예시

package object;

class Book{
	String subject;
	String content;
	
	Book(){	//기본 생성자(클래스 이름과 동일)
		System.out.println("생성자 호출");
		this.subject = "주제";
		this.content = "내용입니다";
	}
	
	void read() {
		System.out.println("----read() 실행----");
		System.out.println(this.subject);
		System.out.println(this.content);
	}
}

public class Main01 {

	public static void main(String[] args) {
	/* Book 클래스의 생성자에서 멤버변수에 대한 기본값을
    설정하기 때문에, 객체를 생성하는 것 만으로 멤버변수가
    초기화 된다.*/
		Book book = new Book(); //Book(); → 생성자 호출
		book.read();
	}

}

결과값

생성자 호출			// Book() 생성자 호출 결과
----read() 실행---- // read() 메서드 호출 결과
주제
내용입니다


1-1. 기본 생성자

  • 파라미터가 없는 생성자
  • 클래스에 특별히 생성자가 정의되지 않은 경우, Java 컴파일러가 기본 생성자가 존재한다고 인식
    (자동으로 만들어준다.)

📝 형식

class User{
	User(){
		// 생성자는 있지만, 내용은 비어있다.
	}
}

1-2. 초기화 생성자(파라미터를 갖는 생성자)

  • 생성자도 메서드의 한 종류이므로 파라미터를 함께 정의하는 것이 가능

  • 생성자의 파라미터를 멤버변수에 복사
    → 객체의 초기화를 외부적인 요인에 의해 처리할 수 있음

🖥️ 예시

package object;

class User{
	String name;
	int age;
	
	User( String name, int age ){
    // 객체를 만들 때 강제로 쓰도록 할 수 있다.
	// 생성자 파라미터의 값을 멤버변수에 복사, 할당
		this.name = name;
		this.age  = age;
	}
}

public class Main08 {

	public static void main(String[] args) {
      /*
       * 생성자에 파라미터가 정의된 경우 객체 생성 구문에서
       * 해당 파라미터를 반드시 전달해야 한다.
       */
       
        //객체의 초기화를 외부적인 요인에 의해 처리
		User user = new User("사용자", 20); 
		System.out.println(user.age);
		System.out.println(user.name);
	}

}

결과값

20
사용자

0개의 댓글