[Java] 생성자

SANG JONG CHOI·2022년 10월 28일
0

Java

목록 보기
10/28

생성자 (Constructor)

  • 객체가 생성되는 순간에 자동으로 호출되는 메소드
  • 객체가 생성될 때 초기화를 위해 사용
  • 생성자가 없다면
  • 객체를 초기화는 메소드를 만들고
  • 초기화를 위해 이 메소드를 반드시 호출해줘야 함

생성자 특징

  • 클래스 이름과 동일
  • 반환값 / 반환형 없음
  • new 연산자를 통해 객체를 생성할 때만 단 한 번 자동으로 호출
  • 아무 때나 호출해서 사용할 수 없음
image-20220619013237699
  • 오버로딩 가능 - 여러 개의 생성자(매개변수 다르게)
  • 매개변수 개수와 데이터 타입 다르게 생성자 여러개 사용 가능
  • 생성자 오버로딩
  • 하나의 클래스에 생성자를 여러 개 기술하면
  • 객체 생성 시 매개변수의 개수, 데이터 타입, 순서가 일치하는 생성자를 알아서 호출
image-20220619013316980

생성자의 용도

  • 멤버 필드 초기화
  • 객체가 처음 생성되는 순간에 처리할 작업 수행
public Test(float rate, String name) {
			this.rate = rate;
			this.name = name;
}

생성자 유형

디폴트 생성자 (default constructor)

  • 매개변수 없고 실행 내용도 없이 자동 생성되는 생성자
  • public Test() { }
  • 생성자가 없는 클래스는 없으며
  • 클래스에 생성자가 하나라도 정의되어 있지 않으면 컴파일러가 기본 생성자를 자동으로 생성
  • 생성자가 하나라도 존재하면 기본 생성자는 자동으로 삽입되지 않음

매개변수가 있는 생성자

  • 객체 생성 시 값을 자동으로 전달하는 생성자
  • 주의! - 객체 생성 시 반드시 값을 전달해야 함
  • 정의된 매개변수 개수, 데이터 타입, 순서대로 타입에 맞게 전달
public Test(float rate, String name) {
  	this.rate = rate;
  	this.name = name;
  }
  
public static void main(String[] args){
  	Test t = new Test(0.5, “홍길동”);
  }

참고 : 매개변수 있는 생성자 자동 삽입

  • 메뉴 Source / Generate Constructor using Fields…
  • 초기화에 사용할 필드 선택 가능

this 레퍼런스

  • 클래스 내에서 객체 자신을 가리키는 레퍼런스
  • 컴파일러에 의해 자동 생성 (사용자가 별도로 선언하지 않음)

용도

  • 전달 받은 매개변수 값으로 멤버 필드의 값 설정 시
  • 매개변수 이름과 멤버 필드명을 구별하기 위해서 사용 (this.멤버필드)
  • 객체 자신의 레퍼런스 반환하는 경우

this() 메소드

  • 한 생성자 안에서 다른 생성자를 호출할 때 사용
  • 생성자 안에서만 사용 가능
  • 호출되는 생성자는 this() 메소드 안에 기술된 인수의 개수, 자료형에 의해 결정
  • 주의!!! - this() 메소드는 생성자 내에서 첫 번째 줄에 기술해야 함

Getter와 Setter : 메소드

Setter

  • 멤버 필드의 값을 설정할 때 사용하는 메소드
  • setXxx() : set필드명()
public void setName(String name) {
			this.name = name;  // name의 필드 값 설정
}

Getter

  • 멤버 필드의 값을 가져와서 사용할 때 사용하는 메소드
  • getXxx() : get필드명()
public String getName(){
	return name; // name 필드의 값 반환
}
  • 클래스 멤버 데이터 보호 방법
  • 클래스의 멤버 필드를 private으로 선언해 클래스 외부에서는 직접 접근 불가
  • 멤버 메소드를 통해서만 접근하도록 함

toString() 메소드

  • 객체가 텍스트 값으로 표시되거나 문자열이 예상되는 방식으로 참조될 때 자동으로 호출되는 메소드
  • 객체가 가지고 있는 정보나 값들을 문자열 형태로 반환
  • 객체 출력 시 toString() 자동 호출
  • System.out.println(객체);

어노테이션 (Annotation)

  • 프로그램에게 추가적인 정보를 제공해주는 메타데이터(metadata)
  • 어노테이션 용도
  • 컴파일러에게 코드 작성 문법 에러 체크하도록 정보 제공
  • 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동 생성하게 정보 제공
  • 실행 시 특정 기능을 실행하도록 정보 제공
컴파일러에게 코드 작성 문법 에러 체크하도록 정보 제공 예
  • @Override 어노테이션
  • 메소드가 오버라이드(재정의)된 것임을 컴파일러에게 알려주어
  • 컴파일러가 오버라이드를 검사하게 함
  • 정확히 오버라이드 되지 않았으면 컴파일러가 에러 발생

오버라이딩

  • 부모 클래스를 자식 클래스에서 상속 받을 때
  • 부모 클래스의 메소드를 자식 클래스에 적합하게 재정의하는 것 (수정해서 사용하는 것)
profile
No error, No gain

0개의 댓글