1. 생성자란?
- 객체가 만들어질 때(new 키워드 사용) 자동으로 호출되는 특별한 메서드
- 이름이 클래스 이름과 같고, 리턴 타입이 없음
- 주로 필드 초기화 작업을 담당
class Member {
private String id;
private String password;
// 기본 생성자 (매개변수 없음)
public Member() {
System.out.println("Member 생성자1");
this.id = "park";
this.password = "9876";
}
// 매개변수 2개 생성자
public Member(String id, String password) {
System.out.println("Member 생성자2");
this.id = id;
this.password = password;
}
// 매개변수 1개 생성자
public Member(String id) {
System.out.println("Member 생성자3");
this.id = id;
this.password = "8888"; // 전달되지 않은 값은 기본값으로 세팅
}
// 정보 출력 메서드
public void display() {
System.out.println(id + "," + password);
}
// Setter
public void setId(String id) {
this.id = id;
}
public void setPw(String password) {
this.password = password;
}
// Getter
public String getId() {
return id;
}
public String getPw() {
return password;
}
}
public class Ex13_생성자 {
public static void main(String[] args) {
// ===== m1 =====
Member m = new Member(); // 기본 생성자 호출
m.setId("kim"); // setter로 값 변경
m.setPw("1234");
m.display(); // 출력: kim,1234
System.out.println(m.getId());
System.out.println(m.getPw());
// ===== m2 =====
Member m2 = new Member("hong", "3333"); // 매개변수 2개 생성자
System.out.println(m2.getId()); // hong
System.out.println(m2.getPw()); // 3333
m2.display();
// ===== m3 =====
Member m3 = new Member("jung"); // 매개변수 1개 생성자
System.out.println(m3.getId()); // jung
System.out.println(m3.getPw()); // 8888 (기본값)
m3.display();
}
}
Member 생성자1
kim,1234
kim
1234
=====m2=====
Member 생성자2
hong
3333
hong,3333
=====m3=====
Member 생성자3
jung
8888
jung,8888
생성자 오버로딩 예시
class Music{
private String title;
private String singer;
private String genre;
private int price;
// m1
public Music(){
this.title = "감동이야";
this.singer = "싸이";
this.genre = "댄스곡";
this.price = 1000;
}
// m2
public Music(String title, String singer, String genre, int price){
this.title = title;
this.singer = singer;
this.genre = genre;
this.price = price;
}
// setter : 값 넣기
public void setTitle(String title) {
this.title = title;
}
public void setSinger(String singer) {
this.singer = singer;
}
public void setGenre(String genre) {
this.genre = genre;
}
public void setPrice(int price) {
this.price = price;
}
// getter : 넣은 값 불러오기
public String getTitle() {
return title;
}
public String getSinger() {
return singer;
}
public String getGenre() {
return genre;
}
public int getPrice() {
return price;
}
public void display() {
System.out.println("title :" + title);
System.out.println("singer :" + singer);
System.out.println("genre :" + genre);
System.out.println("price :" + price);
}
}
public class Ex14_이정륜 {
public static void main(String[] args) {
// 초기화
Music m1 = new Music(); // m1 생성자 통한 초기화
Music m2 = new Music("아파트", "로제", "댄스곡", 3000); // m1 생성자 통한 초기화
Music m3 = new Music(); //m3 setter 통한 초기화
m3.setTitle("달팽이");
m3.setSinger("김재환");
m3.setGenre("발라드");
m3.setPrice(100);
// 출력
// m1은 getter로 출력
System.out.println("==== m1출력 ====");
System.out.println("title :" + m1.getTitle());
System.out.println("singer :" + m1.getSinger());
System.out.println("genre :" + m1.getGenre());
System.out.println("price :" +m1.getPrice());
// m2, m3는 display() 통해서 한번에 출력
System.out.println("==== m2출력 ====");
m2.display();
System.out.println("==== m3출력 ====");
m3.display();
}
}
핵심 정리
- 생성자 오버로딩
- 같은 이름(클래스 이름)이라도 매개변수 개수/타입이 다르면 여러 개 정의 가능
- 상황에 따라 다른 방식으로 객체 초기화 가능
- 기본 생성자
- 매개변수 없는 생성자
- 매개변수 있는 생성자를 만들면, 직접 기본 생성자를 정의해야 함
- this 키워드
- this.id = id; → 매개변수와 멤버변수 이름이 같을 때 구분해줌
'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글
| 19. 포함 (0) | 2025.08.19 |
|---|---|
| 18. 상속 (0) | 2025.08.19 |
| 16. setter/ getter (2) | 2025.08.18 |
| 15. 오버로딩 (1) | 2025.08.18 |
| 14. Math (2) | 2025.08.18 |