반응형
남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
생성자 (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 |
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 생성자 this() / 참조변수 this / 변수의 초기화 / 초기화 순서 ) (0) | 2020.07.09 |
---|---|
자바의 정석 기초 ( 오버로딩 ) (0) | 2020.07.09 |
자바의 정석 기초 ( static 메서드 / instance 메서드 ) (0) | 2020.07.08 |
자바의 정석 기초 ( 메서드 / 메서드 호출 / return 문 / 반환값 ) (0) | 2020.07.08 |
자바의 정석 기초 ( 클래스 정의 / 클래스 선언 위치에 따른 변수 종류 / 클래스 변수 / 인스턴스 변수 / 지역변수 ) (0) | 2020.07.07 |
댓글