본문 바로가기

JavaStudy(open)

기본 생성자를 만드는 이유

기본 생성자가 컴파일러에 의해서 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을 때 뿐이다.
 

그래서 매개변수가 있는 생성자를 만들고 기본생성자를 만들어 놓지 않고
  그 클래스에 해당하는 인스턴스를 생성하면,
    매개변수도 없고 아무런 내용도 없는 인스턴스를 생성 할 수 가 없다.
       아까 만들어놓은 매개변수가 들어간 생성자에 의한 인스턴스만 만들수 있다.

 

class Car {
	int door;
}

class Car2{
	int door;
    
    Car2(int z){		// 매개변수가 있는 생성자
    	door = z;
    }
}

class Example {
	public static void main(String[] args) {
    	Car c = new Car();
        Car2 c2 = new Car2();	// compile error발생!!
    }
}

* 결과값

Example.java : cannot resolve symbol
symbol : constuctor Car2()
location : class Car2
		   Car2 c2 = new Car2();
1 error

-> Car2라는 생성자를 찾을 수 없다는 내용의 에러메시지

    Car2클래스에 생성자 Car2()가 정의되어 있지 않기 때문에 에러가 발생한 것이다.

 

이유 : Car에는 정의되어 있는 생성자가 하나도 없으므로 컴파일러가 기본 생성자를 추가해주었지만,

        Car2에는 이미 생성자 Car2(int z)가 정의되어 있으므로 기본 생성자가 추가되지 않았다!!

 

컴파일러가 자동적으로 기본 생성자를 추가해주는 경우는 

  '클래스 내에 생성자가 하나도 없을 때' 뿐이라는 것을 기억!!!!

'JavaStudy(open)' 카테고리의 다른 글

스터디 로드맵  (0) 2021.11.11