본문 바로가기
기초 및 언어/▶ Java&JSP

17. 생성자

by 류딩이 2025. 8. 18.

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();
		

	}

}

 

핵심 정리

  1. 생성자 오버로딩
    • 같은 이름(클래스 이름)이라도 매개변수 개수/타입이 다르면 여러 개 정의 가능
    • 상황에 따라 다른 방식으로 객체 초기화 가능
  2. 기본 생성자
    • 매개변수 없는 생성자
    • 매개변수 있는 생성자를 만들면, 직접 기본 생성자를 정의해야 함
  3. 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