열렬히.뛰기

생성자

Language > 프로그래밍 언어 > Java > 생성자

생성자

생성자 = 인스턴스 초기화 메서드.

만드는 조건은 다음과 같다.

  1. 생성자의 이름 = 클래스의 이름
  2. 리턴 값이 없어야 한다.

생성자의 예시

클래스 안에 생성자를 만드는 예시

java
class Card() {
	/*매개변수가 없는 생성자*/
	Card() {
		...
	}
	
	/*매개변수가 있는 생성자*/
	Card(String k, int num) {
		...
	}
}

실제로 생성자를 사용하는 예시.

java
Card c = new Card(); 
// new로 인스턴스를 만들고, Card()로 인스턴스를 초기화한다.

char[] charArr = { 'H', 'e', 'l', 'l', 'o' };
String x = new String(charArr);
// new로 인스턴스를 만들고, String()로 인스턴스를 초기화한다.

생성자의 종류

  1. 기본 생성자
    • 클래스에 정의된 생성자가 하나도 없을 때 발동
    • 컴파일러는 이 과정을 자동으로 해준다.
  2. 매개변수가 있는 생성자
    • 매개변수를 담고 있는 생성자
    • 위에 쓴 String()이 대표적인 예시

다른 생성자의 호출

생성자가 2개 이상 있을 경우, 다른 생성자를 호출할 수 있다.

다만, 두 가지 규칙이 존재한다.

(1) 클래스 이름 대신 this를 사용한다. (2) 한 생성자에서 다른 생성자를 호출할 땐, 반드시 첫 줄에서만 호출이 가능

예를 들어, 다음과 같이 메소드가 정의되어 있다고 치자.

java
class Car {
		String s;
		String t;
		int value;

		Car() {
			this("xxx", "yyy", 110);
		}
		Car(Car c) {
			s = c.s;
			t = c.t;
			value = c.value;
		}
		Car (String s, String t, int value) {
			this.s = s;
			this.t = t;
			this.value = value;
		}
}

this() 메소드는 Car()의 첫 번째 줄에 사용되었다.

또 this.s = s를 살펴보자.

  • this 뒤의 s는 인스턴스 변수이다.
  • 반면, s는 지역변수이다.

이런 식으로, 멤버변수와 생성자의 매개변수의 이름이 같을 경우 this를 쓸 수 있다.

this는 인스턴스 변수에서만 사용할 수 있다. (static에선 못 씀)