겉바속촉
객체지향 - 생성자(Constructor) 본문
728x90
반응형
생성자란 ?
<개념>
- 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드'
- 몇가지 조건을 제외하면 메서드와 동일
- 인스턴스 변수의 초기화 or 인스턴스 생성시 수행할 작업에 사용됨
- 모든 클래스에는 반드시 하나 이상의 생성자가 존재해야 함
<조건>
- 생성자의 이름은 클래스의 이름과 같아야 함
- 리턴값이 없음 => 하지만 void 사용하지 않음 주의
기본 생성자란 ?
<개념>
- 매개변수가 없는 생성자
- 생성자가 없는 클래스가 있다면 컴파일러가 기본생성자를 추가함
class Data1 {
int value;
Data1() {} //기본생성자
}
class Data2 {
int value;
Data2(int x) { //매개변수있는 생성자
value = x;
}
}
class ConstructorTest {
public static void main(String[] args) {
Data1 d1 = new Data1 ();
Data2 d2 = new Data2 (); //compile error 발생
}
}
생성자에서 다른 생성자 호출
< this() >
- 생성자나 같은 클래스의 다른 생성자를 호출할 때 사용
- 다른 생성자 호출은 생성자의 첫 문장에서만 가능
class Car {
String color;
String gearType;
int door;
Car() {
color = "white";
gearType = "auto";
door = 4;
}
||
Car() {
this("white","auto",4);
}
}
< 참조변수 this >
- 인스턴스 자신을 가리키는 참조변수
- 인스턴스의 주소가 저장되어있음
- 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재
class Car {
String color;
String gearType;
int door;
Car() {
this("white","auto",4);
}
Car(String c, String g, int d) {
color = "c";
gearType = "g";
door = d;
}
||
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
728x90
반응형
'IT 일기 (상반기) > JAVA' 카테고리의 다른 글
객체지향 - 오버라이딩(overriding) (0) | 2022.11.07 |
---|---|
객체지향 - 상속 (0) | 2022.11.07 |
I/O & Stream (0) | 2022.09.15 |
Blocking VS Non-Blocking (0) | 2022.08.01 |
SYNC(동기적) VS ASYNC(비동기적) (0) | 2022.08.01 |