/ JAVAJUNGSUK

Ch6-32~35. constructor

자바의 정석 기초편

0. 목차



Chapter6. 객체지향 프로그래밍Ⅰ

Ch6 - 32. 생성자(constructor)

Ch6 - 33. 기본 생성자

Ch6 - 34. 매개변수가 있는 생성자

Ch6 - 35. 매개변수가 있는 생성자 예제



Ch6 - 32. 생성자(constructor)


▶ 생성자(constructor)란?

▷ 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
▷ 인스턴스 = 객체(iv 묶음) 그래서 iv 초기화 메서드
▷ 인스턴스 생성 시 수행 할 작업(iv 초기화)에 사용
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56;

이걸 한 줄로 할 수 있음 : 생성자 사용

Time t = new Time(12, 34, 56);  // 생성자를 추가해 주면, 생성자 호출해서 사용 가능

즉 생성자란?

iv 초기화를 편리하게 하기 위한 메서드


▶ 생성자 작성 규칙

▷ 생성자 이름 = 클래스 이름
▷ 리턴값 없음 : 항상 반환값이 없기 때문
▷ void 안 붙임
▷ 모든 클래스는 반드시 하나 이상의 생성자를 가짐
▷ 기본 생성자 : 컴파일러가 생성자가 하나도 없을 때 생성 해 줌
클래스이름(타입 변수명, 타입 변수명, ...) {
    // 인스턴스 생성시 수행 될 코드,
    // 주로 인스턴스 변수의 초기화 코드를 적음
}

▶ 생성자 오버로딩

class Card() {

    Card() { // 매개변수 없는 생성자
        // 인스턴스 초기화 작업
    }
    
    Card(String kind, int number) { // 매개변수 있는 생성자
        // 인스턴스 초기화 작업
    }
}



Ch6 - 33. 기본 생성자


▶ 기본 생성자란?

▷ 매개변수가 없는 생성자
▷ 생성자가 하나도 없을 때만, 컴파일러가 자동 추가
클래스이름() { } // 기본 생성자
Point() { } // 직접 작성, Point 클래스의 기본 생성자
▷ 생성자는 자동 추가보다 직접 추가로 반드시 넣어 주기
class Data_1 {
Data_1() {} // 기본 생성자
	int value;
}

class Data_2 {
Data_2() {} // 기본 생성자

	int value;

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

class Ex6_11 {
    public static void main(String[] args) {
    Data_1 d1 = new Data_1();
    
    // compile error발생, The constructor Data_2() is undefined
    // Data_2() {} 기본 생성자 추가
    Data_2 d2 = new Data_2();
    }
}



Ch6 - 34. 매개변수가 있는 생성자


▶ 기본 생성자와 매개변수가 있는 생성자

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



Ch6 - 35. 매개변수가 있는 생성자 예제


▶ iv 초기화를 매개변수가 있는 생성자로

▷ iv 초기화
Car c = new Car();
c.color = "white";
c.gearType = "auto";
c.door = 4;
▷ iv 초기화 : 매개변수가 있는 생성자
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("white", "auto", 4); // iv 초기화
}