6-32~35 생성자, 기본 생성자

oyeon·2020년 12월 23일
0

(완)객체지향 개념

목록 보기
14/37

생성자(constructor)

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

위 코드를 아래와 같이 생성자 호출을 통해 초기화 가능

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

생성자 선언 규칙

  • 이름이 클래스 이름과 같아야 한다.
  • 리턴 값이 없다.(void 안 붙임)
  • 모든 클래스는 반드시 생성자를 가져야 한다.

기본 생성자(default constructor)

  • 매개변수가 없는 생성자
  • 생성자가 하나도 없을 때만, 컴파일러가 기본 생성자 자동 추가
    (But, 원칙대로 직접 선언하여 프로그래밍 하자)
class Data_1{
    int value;
    Data_1() {}	// 기본 생성자
}
class 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();
        Data_2 d2 = new Data_2(); // compile error 발생. 
        // 이미 다른 생성자가 존재하기 때문에 기본 생성자 추가가 안 되기 때문
    }
}

매개변수가 있는 생성자

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);
profile
Enjoy to study

0개의 댓글