겉바속촉

객체지향 - 생성자(Constructor) 본문

IT 일기 (상반기)/JAVA

객체지향 - 생성자(Constructor)

겉바속촉 2022. 11. 7. 14:24
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