생성자

조상원·2025년 8월 2일

JAVA

목록 보기
6/34
  • Constructor
  • 생성자는 new 연산자로 호출되는 특별한 메소드
  • 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당
  • 모든 클래스는 생성자가 반드시 존재해야하고 생성자를 하나 이상 가질 수 있음
  • 생성자와 new 연산자에 의해 Heap 영역에 객체가 생성되고 생성된 객체의 주소가 리턴됨
  • new 연산자로 호출되는 특별한 중괄호 {} 블록
  • 객체 생성 시 초기화 담당

→ 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 한다

  • 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어 있고, 반환 타입 없음

생성자 선언

[접근 제한자] 클래스명([매개변수]) { ...}
  • 메서드와 다르게 반환값이 없음
  • 생성자명은 클래스명과 똑같이 지정
  • 클래스에 생성자 선언을 생략하면 컴파일러가 내용이 비어있는 기본 생성자 (Default)를 자동으로 추가
  • 생성자도 메소드이기 떄문에 오버로딩 가능
  • 오버로딩의 조건은 메소드 오버로딩과 동일
  • 생성자 오버로딩을 통해 여러개의 생성자를 만들고 객체 생성 시 필요한 생성자 호출해서 객체 생성 가능
public class Member {
  // 필드 정의
  private String name;
  private int age;
  
  // 생성자 정의
  // 기본 생성자
  public Member() {
  }

  // 매개변수가 있는 생성자 (필드 초기화)
  public Member(String name, int age) {
    this.name = name;
    this.age = age;
  }
  
  // 메소드 정의
  public String information() {
    return "이름은 " + this.name + ", 나이는 " +  this.age + "살 입니다.";
  }
}
Member member1 = new Member(); // 기본 생성자 호출
Member member2 = new Member("홍길동", 38); // 이름과 나이를 매개값으로 받는 생성자 호출

this

  • 객체 내부에서 객체 자신
  • 객체 내부에서 다른 맴버에 접근하기 위해 사용
  • this는 주로 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우에 매개변수와 필드를 구분하기 위해 사용
  • 자신의 다른 생성자를 호출하는 코드.
  • 반드시 생성자의 첫줄에서만 허용
  • 호출되는 생성자의 매개 변수 타입에 맞게 제공해야 함

다른 생성자 호출

  • 생성자에서 다른 생성자를 호출할 때 this 사용.
  • this를 통해 생성자간에 중복되는 코드를 제거할 수 있음
public class Member {
  private String name;    
  private int age;

  public Member() {
    // 생성자의 매개변수 타입과 순서에 맞게 전달해야 한다.
    this("홍길동", 0);
  }

  public Member(String name, int age) {
    this.name = name;
    this.age = age;
  }
}

0개의 댓글