객체지향 프로그래밍 - 생성자

소금·2024년 3월 18일
0

생성자(Constructor) 란?

  • 인스턴스 생성 시 호출되는 인스턴스 초기화 메소드를 말한다.
  • 인스턴스 변수의 초기화 작업에 주로 사용된다.
  • 생성자 명은 클래스명과 같다.
  • 리턴 값이 없다.

1. 기본 생성자

  • 컴파일러가 제공하는 기능이다.
  • 클래스에 생성자가 정의되지 않은 경우 컴파일러가 자동적으로 기본 생성자를 추가하여 컴파일 한다.
  • '클래스 내에 생성자가 하나도 없을 때'에만 자동 생성된다.

2. 매개변수가 있는 생성자

class House {
	int desposit; 	//보증금
    int monthlyRent; //월세
    int utilityBill; //공과금
    
    House() {} 			//생성자
    House(int d, int m, int u) { //생성자
    	desposit = d;
        monthlyRent = m;
        utility = u;
    }
}
  • House 인스턴스를 생성할 시, 매개변수가 있는 생성자를 사용하면 인스턴스 생성과 함께 값을 초기화 할 수 있다. (코드를 간결하게 만들어 준다.)
//기본생성자 사용시
House house = new House();
house.deposit = 20000000;
house.monthlyRent = 500000;
house.utilityBill = 100000;

//매개변수 있는 생성자 사용 시
House house = new House(20000000,500000,100000);

3. 생성자에서 다른 생성자 호출 - this

  • 생성자 간에도 서로 호출이 가능하다.
  • 생성자 명을 클래스 명 대신 this를 사용한다.
  • 반드시 첫 줄에서만 호출이 가능하다.
class House {
	int desposit; 	//보증금
    int monthlyRent; //월세
    int utilityBill; //공과금
    
    House() {
    	//House(int desposit, int monthlyRent, int utilityBill)이 호출된다.
    	this(5000000,700000,100000);
    }
   
    House(int desposit, int monthlyRent, int utilityBill) {
    	this.desposit = desposit;
        this.monthlyRent = monthlyRent;
        this.utility = utility;
    }
}
  • 인스턴스 변수 앞에 this 를 붙여주는 이유는 인스턴스 변수와 매개변수를 구분짓기 위함이다.
  • this는 인스턴스 멤버만 사용할 수 있다. (클래스 메소드에서는 사용이 불가하다.)

0개의 댓글