본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 생성자 (constructor)/ 생성자 규칙 / 기본 생성자 (default constructor ) / 매개변수가 있는 생성자 )

by ✲ 2020. 7. 9.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.

생성자 (constructor)

- 인스턴스가 생성될 때 마다 호출되는 '인스턴스 초기화 메서드'

(인스턴스 초기화는 인스턴스 변수 초기화 라고 생각하면 됨)

Time t = new Time();

t.hour = 12;

t.minute = 34;

t.second = 56;      // 12시 34분 56초로 설정한 것이 초기화

> Time t = new Time(12,34,56);   생성자 호출(사용) 가능

 

생성자 규칙

- 이름이 클래스 이름과 같아야 한다

- 리턴값이 없다. (void 안붙임)

- 모든 클래스는 반드시 생성자를 가져야한다.

 

클래스이름(타입 변수명, 타입 변수명 ...) {

    // 인스턴스 생성 시 수행될 코드

    // 주로 인스턴스 변수의 초기화 코드

}

1
2
3
4
5
6
7
8
9
 
class Card {
    Card(){  // 매개변수 없는 생성자 기본 생성자 
    }
    Card(String kind, int number){ //매개변수 있는 생성자 
        // 인스턴스 초기화 작업 
    }
}
 
cs

 

기본 생성자 ( default constructor)

- 매개변수가 없는 생성자

- 생성자가 하나도 없을 때만, 컴파일러가 자동 추가

ex) 클래스이름(){} // 기본생성자

     Point(){}        // Point클래스의 기본 생성자

 

매개변수가 있는 생성자

1
2
3
4
5
6
7
8
9
10
11
12
class Car {
    String color; 
    String gearType; 
    int door;
 
    Car(){}
    Car(String c, String g, int d){
        color = c;
        gearType = g;
        door  = d; 
    }
}
cs

Car c = new Car();
c.color = "white';
c.gearType = "auto";
c.door = 4;                     ==> Car c = new Car("white", "auto",4);

 

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Data_1{
    int value;
}                    // 생성자가 한개도 없어서 Data_1(){}   컴파일러가 자동으로 생성 
 
class Data_2{
    int value;
    
    //Data_2(){}         
    Data_2(int x){
        value = x; 
    }
}
 
 
 
 
class Ex6_11 {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Data_1 d1 = new Data_1();
        Data_2 d2 = new Data_2(); 
        //The constructor Data_2() is undefined 에러 발생 
        // Data_2 클래스에서 Data_2 기본 생성자 추가해줘야함 
        // 기존에 Data_2(int x) 가 있기 떄문에 컴파일러가 기본생성자 추가 X 
    }
 
}
 
cs

 

 

반응형

댓글