검색결과 리스트
글
[java] 생성자란 무엇인가? 자바 생성자
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() { } |
리턴이 있으면 메소드로 인식할 수 있습니다.
※ 틀린 부분이 있다면 댓글 남겨주세요.
'program > java' 카테고리의 다른 글
[java] break 를 원하는 위치로 이동 시키는 법 ! (0) | 2012.10.26 |
---|---|
[java] Exception, 익셉션의 이해 (Runtime Exception vs Exception) (0) | 2012.10.26 |
[java] 문자열 합치기, StringBuffer, String + String, concat 성능 비교 (0) | 2012.10.07 |
[java] Iterator 사용법과 성능 비교 (0) | 2012.10.07 |
[java] for 문의 각 Operator(Inner Size, Outer Size, Colon Operator) 별 속도 차이 (0) | 2012.10.07 |