생성자 constructor
new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당
객체 초기화
- 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것
- new 연산자에 의해 생성자가 실행되면 힙 영역에 객체가 생성되고 객체의 번지 리턴
- 리턴된 객체의 번지는 클래스 변수에 저장
기본 생성자 default constructor
[public] 클래스() {}
- 클래스가 public class로 선언되면 기본 생성자에도 public이 붙지만 클래스가 public 없이 선언되면 기본 생성자에도 public 없음
생성자 선언
클래스( 매개변수선언, ....){ 객체 초기화 코드}
- 리턴 타입이 없고 클래스 이름과 동일
- 블록 내부에 객체 초기화 코드가 작성됨
- 필드에 초기값을 저장하거나 메소드를 호출하여 객체 사용전에 필요한 준비를 함
- 매개 변수는 new 연산자로 생성자를 호출할 때 외부의 값을 생성자 블록 내부로 전달하는 역할을 함
필드 초기화
- 클래스로부터 객체가 생성될 때 필드는 기본 초기값으로 자동 설정됨
- 초기화하는 방법
- 필드를 선언할 때 초기값을 주는 방법
- 생성자에게 초기값을 주는 방법
생성자 오버로딩
- 매개변수를 달리하는 생성자를 여러개 선언하는 것
다른 생성자 호출: this()
- 생성자에서 다른 생성차를 호출할 때 this()코드를 사용
- 생성자의 첫 줄에서만 허용
- this()의 매개값은 호출되는 생성자의 매개 변수에 맞게 제공해야 함
- this() 다음에는 추가적인 실행문들이 올 수 있음
- 호출되는 생성자의 실행이 끝나면 원래 생성자로 돌아와서 다음 실행문을 진행
확인 문제
- 객체를 생성하려면 생성자 호출이 반드시 필요한 것은 아니다. (x)
- 생성자는 다른 생성자를 호출하기 위해 this()를 사용할 수 있다. (o)
- 생성자가 선언되지 않으면 컴파일러가 기본 생성자를 추가한다. (o)
- 매개 변수의 수, 타입, 순서가 다른 생성자를 여러 개 선언할 수 있다. (o)
Member 클래스 작성
public class Member {
String name;
String id;
public Member(String name, String id){
this.name = name;
this.id = id;
}
}
Board 클래스 작성
public class Board {
String title;
String content;
String writer;
String date;
int hitcount;
Board(String title, String content, String writer, String date, int hitcount){
this.title = title;
this.content = content;
this.writer = writer;
this.date =date;
this.hitcount = hitcount;
}
Board(String title, String content){
this(title, content, "로그인한 회원아이디", "현재 컴퓨터 날짜", 0);
}
Board(String title, String content, String writer){
this(title, content,writer,"현재 컴퓨터 날짜", 0);
}
Board(String title, String content, String writer, String date){
this(title, content,writer,date,0);
}
}
'Java > 혼자 공부하는 자바' 카테고리의 다른 글
혼자공부하는자바 6-6 패키지와 접근 제한자 (0) | 2022.11.28 |
---|---|
혼자공부하는자바 6-5 인스턴스 멤버와 정적 멤버 (0) | 2022.11.28 |
혼자공부하는자바 ch 6-4 메소드 (0) | 2022.11.25 |
혼자공부하는자바 ch 6-2 필드 (0) | 2022.11.23 |
혼자공부하는자바 ch 6-1 객체 지향 프로그래밍 (1) | 2022.11.22 |