[JAVA] 자바 정복기 - 생성자

개발log·2024년 3월 29일

NEW 자바 정복기

목록 보기
8/27
post-thumbnail

생성자

  • 클래스로부터 new 연산자로 객체를 생성할 때 호출되어 객체의 초기화를 담당

객체 초기화

  • 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것

생성자가 성공적으로 실행

  • 힙 영역에 객체 생성되고 객체 번지가 리턴

기본 생성자

  • 클래스 내부에 생성자 선언 생략할 경우 바이트 코드에 자동 추가
[public] 클래스() { }
  • 클래스에 생성자 선언하지 않아도 new 생성자()로 객체 생성 가능

생성자 선언

클래스( 매개변수 선언, ...){ //생성자 블록
	//객체의 초기화 코드
}
  • 매개 변수 선언은 생략할 수도 있고 여러 개 선언할 수도 있음
public class Car{
	Car(String model, String color, int maxSpped) { ... }
}
  • 클래스에 생성자가 명시적으로 선언되었을 경우 반드시 선언된 생성자 호출하여 객체 생성
Car myCar = new Car("그랜저", "검정", 300)

필드 초기화

public class Korean {
  //필드
  String nation = "대한민국";
  String name;
  String ssn;
}

//생성자
public Korean(String n, String s) {
	name = n;
    ssn = s;
}
Korean k1 = new Korean("김자바", "011225-1234567");
Korean k2 = new Korean("용자바", "990525-0654321");
  • 매개변수 이름은 필드 이름과 유사하거나 동일한 것 사용 권장
  • 필드와 매개 변수 이름 완전히 동일할 경우 this필드로 표현
public Korean(String name, String ssn){
	this.name = name;
    //필드	//매개 변수
    
    this.ssn = ssn;
    //필드	//매개변수
}

생성자 오버로딩

  • 매개 변수를 달리하는 생성자 여러 개 선언
  • 외부에서 제공되는 다양한 데이터 사용하여 객체 초기화하려면 생성자 역시 다양화될 필요가 있음
  • 매개 변수의 타입, 개수, 선언된 순서 가은 경우, 매개 변수 이름만 바꾸는 것은 생성자 오버로딩이 아님
Car(String model, String color) {...}
Car(String color, String model) {...} //오버로딩이 아님

다른 생성자 호출: this()

  • 생성자에서 다른 생성자 호출
  • 필드 초기화 내용을 한 생성자에만 집중 작성하고 나머지 생성자는 초기화 내용 가진 생성자로 호출
    생성자 오버로딩 증가 시 중복 코드 발생 문제 해결
  • 생성자 첫 줄에서만 허용

정리

  • 기본 생성자: 클래스 선언 시 컴파일에 의해 자동으로 추가되는 생성자
  • 생성자 선언: 생성자를 명시적으로 선언 가능, 생성자를 선언하면 기본 생성자는 생성되지 않음
  • 매개 변수:생성자 호출 시 값을 전달받기 위해 선언하는 변수
  • 객체 초기화: 생성자 내부에서 필드값 초기화하거나 메소드 호출에서 사용 준비를 하는 것
  • 오버로딩: 매개변수 달리하는 생성자를 여러 개 선언
  • this(): 객체 자신의 또 다른 생성자를 호출할 때 사용
profile
나의 개발 저장소

0개의 댓글