왜 매개변수가 있는 생성자를 정의하면 매개변수가 없는 기본 생성자는 없어지는거죠?

조회수 2010회

C#이랑 C++이랑 자바에서 매개변수가 있는 생성자를 만들면 매개변수가 없는 디폴트 생성자는 없어지잖아요. 전에는 그냥 그렇구나했었는데 갑자기 이게 왜 그런지 궁금해졌어요.

이렇게 되는 이유가 뭔가요? 이건 그냥 "이미 생성자를 하나만들었으니까 아마 이런 임의의 디폴트생성자는 필요없을거야" 하는 안전을 위한 예방조치인가요? 아니면 생성자를 하나 추가하면 컴파일러가 만들지 못하게 하는 기술적인 이유가 있는건가요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    사용자가 생성자를 정의한다고 컴파일러는 추가하지 못한다는 기술적인 이유는 없습니다. 그러나 만약 생성자를 정의하지 않은 non-static클래스에서 클래스를 인스턴스화 시키길 원할때 컴파일러는 아무 일도 하지 않지만 인스턴스화가 가능하게 디폴트 생성자를 추가시켜야 합니다. 그러므로 내 코드가 제대로 작동하게 하기위해서 굳이 빈 생성자를 포함할 필요가 없게끔 만들어줍니다.

    만약 매개변수가 하나이상 있는 생성자를 정의한다는것은 클래스를 인스턴스화 할때 이 생성자를 써서 클래스의 내용물을 초기화시켜주고 어떤 목적이 있을 가능성이 높은데 컴파일러가 임의로 디폴트 생성자를 정의해줄 경우 누군가가 이런 로직을 건너띄고 버그를 만들 가능성을 키웁니다. 만약 디폴트 생성자가 필요하다면 명시적으로 디폴트 생성자를 정의하는게 더 바람직한 방법입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)