생성자

강준우·2023년 2월 4일
0

생성자


인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드

  • 생성자의 이름은 클래스의 이름과 같아야 한다.
  • 생성자는 return 값이 없다. (void 또한 사용하지 않는다.)
  • 오버로딩이 가능하므로 하나의 클래스에 여러 생성자가 존재할 수 있다.

Default 생성자


스파일의 클래스에 생성자가 하나도 정의되어있지 않으면 컴파일러가 자동으로 기본 생성자를 생성해서 컴파일해준다. 단, 기본 생성자가 컴파일러에 의해서 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을 때 뿐이다.

this()


생성자 간 서로 호출시에 사용된다. 단 생성자의 이름으로 클래스의 이름 대신 this를 사용해야 하고, 반드시 첫 줄에서만 호출이 가능하다.

class Car {
	String color;		
	String gearType;	
	int door;			

	Car() {
		this("white", "auto", 4);	
	}

	Car(String color) {
		this(color, "auto", 4);
	}
	Car(String color, String gearType, int door) {
		this.color    = color;
		this.gearType = gearType;
		this.door     = door;
	}
}

class CarTest2 {
	public static void main(String[] args) {
		Car c1 = new Car();	
		Car c2 = new Car("blue");

		System.out.println("c1의 color=" + c1.color + ", gearType=" + c1.gearType+ ", door="+c1.door);
		System.out.println("c2의 color=" + c2.color + ", gearType=" + c2.gearType+ ", door="+c2.door);
	}
}

현재 사용하고 있는 인스턴스의 값을 복사하여 이와 같은 값을 가지는 인스턴스를 만들 때 생성자를 사용할 수 있다.

class Example {
  int value1;
  int value2;

  Example(int value1, int value2) {
    this.value1 = value1;
    this.value2 = value2;
  }

  Example(Example ex) {
	this(ex.value1, ex.value2);
  }
}
profile
강준우

0개의 댓글

관련 채용 정보