[JAVA] 11.생성자

안녕하세요 IT뽀로로입니다.

 

오늘은 생성자에 대해서 알아볼게요.

 

바로 가시죠

 

#생성자란?

 

클래스는 객체를 생성하기 위한 설계도 혹은 틀이라 했습니다.

 

생성자는 객체를 생성할 때 초기화를 위해 실행되는 메서드입니다.

 

 

#생성자 선언과 호출

 

생성자는 객체가 생성되는 순간에 자동으로 호출되는 메서드로써 객체에 필요한 초기화를 수행하는 코드를 포함한다.

 

즉, 객체를 생성할 때 객체의 필드를 초기화하기 위한 메서드인 것입니다.

 

 

#생성자 선언 시 주의사항

 

1. 생성자 이름은 클래스의 이름과 동일하다.

 

public class stamp{
	public stamp(intx){	//생성자
	}
}

 

2. 생성자는 new를 통해 객체를 생성할 때만 호출된다.

 

stamp s = enw stamp(3);

 

3. 생성자도 오버 로딩이 가능하다.

 

이 내용은 저번 시간에도 말씀드렸죠?

 

이렇게 가능하답니다.

 

public class stamp{
	public stamp(int x){
	}
	public stamp(){
	}
	public stamp(int x, double y){
	}
}

 

4. 생성자는 어떠한 리턴 값도 지정할 수 없다.

 

생성자는 어떠한 값도 리턴하지 않기 때문입니다!

 

 

#생성자의 용도

 

생성자의 주된 용도는 필드를 초기화하거나 객체가 처음 생성되는 순간에 처리할 작업을 수행하는 데 있습니다.

 

 

#기본 생성자(Default Constructor)

 

기본 생성자는 인자도 없고 내용도 없이 단순 리턴하는 생성자이다.

 

기본 생성자는 컴파일러에 의해 자동 생성되므로 생략이 된다.

 

근대 클래스 내에 생성자가 1개라도 있는 경우 기본 생성자가 자동 생성이 안된다.

 

#this() 메서드 

 

this() 메소드는 전 시간에 살펴보았던 this랑 다릅니다.

 

this()는 생성자 코드에서만 사용할 수 있습니다.

 

this()의 용도는 동일한 클래스 내의 다른 생성자를 호출할 때 사용합니다.

 

this()는 반드시 생성자의 첫문장에서만 사용되어야 합니다.

 

코드를 보며 이해해보세요

 

public class Book{
	String title;
	String author;
	int ISBN;

	public Book(String title, String author, int ISBN){
		this.title = title;
		this.author = author;
		this.ISBN = ISBN;
	}

	public Book(String title, int ISBN){
		this(title, "Anonymous", ISBN);
	}

	public Book(){
		this(null, null, 0);
		System.out.println("생성자가 호출되었음");
	}

	public static void main(String[] agrs){
		Book javaBook = new Book("java JDK", "황기태", 3333);
		Book holyBible = new Book("Holy Bible", 1);
		Book emptyBook = new Book();
	}
}

 

간단하게 살펴보면 javaBook이 객체가 생성이 되고, holyBible이 객체가 생성될 때 

 

생성자를 보면 가운데 "Anonymous"가 들어가 있습니다. 그럼 인자가 3개가 되어버려 인자가 3개인 생성자를

 

호출하게 되는 것이죠.

 

 

References. 명품 Java Programming

'IT Study > JAVA' 카테고리의 다른 글

[JAVA] 13.static 멤버와 final 키워드  (0) 2019.09.04
[JAVA] 12.접근 지정자  (0) 2019.09.04
[JAVA] 10.this  (0) 2019.09.02
[JAVA] 9.메소드 오버로딩(Method Overloading)  (0) 2019.09.02
[JAVA] 8.인자전달 (Call-by-value)  (0) 2019.09.02