[java] 생성자란 무엇인가? 자바 생성자

program/java 2012. 10. 19. 11:11
반응형



Q. 생성자의 이해



1. 생성자는 무엇인가 ?

2. 생성자는 클래스 이름과 같아야 한다.

3. 생성자는 최소한 한개는 존재해야 한다 ?

4. 생성자는 여러개 존재할 수 있다.

5. 클래스 내에서 생성자와 메소드의 차이는 ?










1. 생성자는 무엇인가 ?


클래스 파일을 만들면 클래스 파일 자체는 어떠한 객체의 타입이 됩니다.


클래스 파일을 사용하기 위해선 new를 하여 사용해야 하는데,


그때 new 뒤에 붙는 문구가 생성자(아래의 빨간 부분) 입니다.


MyObject myObject = new MyObject()







2. 생성자는 클래스 이름과 같아야 한다.


생성자는 클래스와 이름이 같아야 한다..?


생성자는 클래스와 이름을 같이 써서 생성해야 합니다.


아래와 같이 new 를 했을 때,


MyObject myObject = new MyObject()


항상 그렇게 쓰나보다 생각했던 것이,


바로 생성자인 MyObject() 를 부르게 되는 것입니다.


MyObject.java

class MyObject

{

public MyObject()

{

}








3. 생성자는 최소한 한개는 존재해야 한다.


클래스는 경우에 따라 다르지만 항상 최소한 한개는 존재해야 합니다. (특수한 경우는 제외하고)


파라미터(인자)가 없는 생성자를 기본 생성자라고 부릅니다.


기본생성자(파라미터 없음)

public MyObject()

{

}


그럼 생성자가 없어도 되는 경우를 살펴보겠습니다.


※ 어려우니 이해가 안되시는분은 패스하시고 4번으로 가셔도 됩니다. ※


※ 심화 : 생성자가 없는 경우


생성자가 없는 경우도 있습니다.


이 경우는 특수한 경우 입니다.


아래와 같이 상속을 받는 경우, 기본 ChildClass의 기본 생성자가 없어도 됩니다.


왜냐면 ChildClass 를 로드하기 위해선 상속받은 상위 클래스인 ParentClass를 로드하기 때문이죠.


ChildClass 의 생성자가 없기 때문에 ParentClass 의 기본 생성자(파라미터가 없는)를 부르게 됩니다.


이와 같은 경우는 ChildClass에 생성자가 없어도 된다는 것입니다.


ParentClass

ChildClass 

public class ParentClass

{

private int defValue;


public ParentClass()

{

this.defValue = 10;

}


public ParentClass( int defValue )

{

this.defValue = defValue;

}

}

public class ChildClass extends ParentClass

{


}








4. 생성자는 여러개 존재할 수 있다 ?


생성자는 여러개 존재할 수 있습니다.


흔히 기본생성자 이외에 파라미터가 있는 생성자가 존재할 수 있습니다.



기본생성자

파라미터가 있는 생성자1 

파라미터가 있는 생성자2

public MyObject()

{

}

public MyObject( int a ) 

{

}

public MyObject( String b )

{

MyObject obj = new MyObject(); MyObject obj = new MyObject( 10 ); MyObject obj = new MyObject( "A" );  







5. 클래스 내에서 생성자와 메소드의 차이는 ?


클래스 내에서 사용될 수 있는 생성자와 메소드가 있습니다.


생성자와 메소드의 차이는 가장 크게 구분되는 것이,


리턴 유무(리턴 값이 없는 void 포함) 에 있습니다.


리턴 유무

리텀 유무(void)

public int MyObject()

{

return 0;

}

public void MyObject()

{


}


리턴이 있으면 메소드로 인식할 수 있습니다.






※ 틀린 부분이 있다면 댓글 남겨주세요.

반응형