생성자

1c2·2024년 1월 16일
0

JAVA

목록 보기
4/13

클래스 구성 요소

1) 필드(field)
2) 메서드(method)
3) 생성자(constructor)
4) 내부 클래스(inner class)
5) this 키워드, this() 메서드

생성자

  • 객체를 생성할 때 호출하는 매서드 비슷한 것

  • new 키워드와 함께 호출

Person p1 = new Person();
  • 일반 멤버 변수의 초기화나 객체 생성 시 실행돼야 하는 작업 정리

기본 생성자

  • 생성자 코드가 없는 경우 컴파일러가 기본생성자 제공
  • 생성자 코드가 하나라도 있는 경우 컴파일러가 기본생성자 제공X
  • 기본생성자는 매개변수가 없다.

파라미터가 있는 생성자

  • 리턴타입이 없고 (무언가를 리턴하지는 못함) 클래스 명과 같아야 함
  • 생성자 안에 return 문장은 사용 가능
/**
 * 생성자 constructor
 * 생성자가 하나도 없는 경우 컴파일러가 기본 생성자 추가 
 * 생성자가 하나라도 있는 경우 컴파일러가 기본 생성자 추가 X
 * this : 나 자신의객체를 가리키는 참조 변수
 * 		모든 메서드, 모든 생성자에서 가용할 수 있는 지역변수
 * this() : 나 말고 또 다른 생성자 호출 -> 코드의 첫번째 줄에만 사용 가능
 * this는 객체에 대한 참조 => static 영역에서 this 사용 불가
 * 생성자는 주소를 리턴하므로 리턴 타입을 명시하면 안됨
 * 
 */
public class DefaultPerson {
  String name;
  int age;
  boolean isHungry;
  static { //static 초기화 블록
	  System.out.println("static 초기화 블록");
  }
  {
	  System.out.println("초기화 블록");
	  //초기화블록
  }
  // public DefaultPerson() {} -- 생략된 기본 생성자

  DefaultPerson(String name, int age) {
 	 this.name = name; //this : 전역변수를 가리킴
     this.age = age;
     System.out.println("hello");
  } //명시된 생성자
  DefaultPerson() {
	  this("신원철",25); // 또다른 생성자 호출
	  System.out.println("hi");
  } //직접 기본생성자 선언
  public static void main(String[] args) {
    DefaultPerson person = new DefaultPerson();
    person.name = "홍길동";
    person.age = 10;
    person.isHungry = false;
  }
}

생성자는 우클릭 -> source -> constructor로 만들 수 있음
단축키
alt + shift + s + o

참고로 getter / setter는
단축키 alt + shift + s + r

초기화블록

  • {}를 이용해 내부에 실행 코드 작성

  • 이름이 없으므로 별도 호출 불가 / 파라미터를 받을 수도 없음

  • 초기화 블록의 종류

  • 클래스 초기화 블록
  • 인스턴스 초기화 블록

0개의 댓글