📚 참고
자바의 정석 기초편 (객체지향개념만)

 

 

 

 

 

 

 

 

 

생성자

 

  • 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
  • 인스턴스 생성 시, 수행할 작업(예를 들어, iv 초기화)에 사용

 

 

 

 

1. 객체 생성

 

Time t = new Time();

 

 

 

 

2. iv 초기화

 

t.hour = 12;
t.minute = 34;
t.second = 56;

 

 

 

 

3. 1, 2번 과정 한번에 수행

 

  • 생성자 추가를 통해 생성자를 호출하여 간단한 코드로 객체를 초기화 할 수 있다.

 

Time t = new Time(12, 34, 56);

 

 

 

 

 

 

 

생성자 생성

 

  • 이름이 클래스명과 같아야 한다.
  • 리턴값이 없지만 void는 안 붙인다. (iv 초기화만 해주면 되니까 반환값이 필요없음)
  • 모든 클래스는 반드시 생성자를 가져야 한다.

 

클래스명(타입 변수명, 타입 변수명, ...) {
    // 인스턴스 생성 시, 수행될 코드
    // 주로 인스턴스 변수의 초기화 코드를 작성
}
// 생성자 오버로딩
class Card {
    // 매개변수 없는 생성자
    Card() {
    	// 인스턴스 초기화 작업
    }
    
    // 매개변수 있는 생성자
    Card(String kind, int number) {
    	// 인스턴스 초기화 작업
    }
}

 

 

 

 

 

 

 

기본 생성자 (Default Constructor)

 

  • 매개변수가 없는 생성자
  • 생성자가 하나도 없을 때만 컴파일러가 자동 추가

 

// 생성자 0개 (생성자가 하나도 없으니 컴파일러가 기본 생성자를 자동 추가)
class Data_1 {
	int value;
}

// 생성자 1개
class Data_2 {
	int value;

	// Data_2() {}
    
    // 매개변수가 있는 생성자
	Data_2(int x) {
		value = x;
	}
}

class Ex6_11 {
	public static void main(String[] args) {
		Data_1 d1 = new Data_1();
        
        // 🚩compile error
        // cannot resolve symbol => Data_2 class에 기본 생성자를 만들어줌
		Data_2 d2 = new Data_2();
	}
}

 

 

 

 

 

 

 

매개변수가 있는 생성자

 

class Car {
    String color;
    String gearType;
    int door;
    
    // 기본 생성자
    Car() {}
    
    // 매개변수가 있는 생성자
    Car(String c, String g, int d) {
    	color = c;
        gearType = g;
        door = d;
    }
}
Car c = new Car();
c.color = "white";
c.gearType = "auto";
c.door = 4;

// 생성자의 필요 이유 => 코드가 간결해진다.
Car c = new Car("white", "auto", 4);

 

  • new 연산자가 해당 클래스를 스캔 후, 객체를 만든다.
  • 그 후, 생성자에 의해 객체가 초기화 된다.

 

 

 

 

 

 

 

 

 

 

'JAVA > 객체지향개념' 카테고리의 다른 글

변수 초기화  (0) 2021.03.13
생성자 this(), 참조변수 this  (0) 2021.03.13
오버로딩 (Overloading)  (0) 2021.03.11
Instance 메서드 vs Static 메서드  (0) 2021.03.11
기본형 매개변수, 참조형 매개변수 차이점  (0) 2021.03.09