일단 이것저것 해 보는 블로그

(Do it! 자바, 3주차-1) 실습 중 오류 해결: 디폴트 생성자와 매개변수를 직접 명시하는 생성자 간 차이를 중심으로 본문

2026/Do it Java 스터디(2026.01.~02.)

(Do it! 자바, 3주차-1) 실습 중 오류 해결: 디폴트 생성자와 매개변수를 직접 명시하는 생성자 간 차이를 중심으로

뷔구룽 2026. 1. 19. 10:36

3주차 기록

(Do it! 자바, 3주차) 객체 지향 프로그래밍의 여러 기술 (260119~)

 

사용 및 참고한 학습자료

 

박은종, 2025, <Do it! 자바 프로그래밍 입문 [개정판]>, 이지스퍼블리싱.

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415

 

Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자

eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인

ebook-product.kyobobook.co.kr

아래 스샷에 있는 코드는 모두 이 책의 예제에서 비롯된 소스임을 밝힌다.

 

상황

 

위와 같이 매개변수를 직접 지정해 준 생성자를 선언한 후 테스트 프로그램을 실행해 보니

이런 오류를 볼 수 있었다.

 

원인 분석

처음에는 단순히 actual and formal argument lists differ in length 라는 원인에만 집중해서 구글링을 해 봤는데

대부분 기존 개발자 분들의 특수한 환경설정 문제였다.

이는 이제 막 자바 기초를 배우는 나에게는 해당되지 않았다.

 

다만 해당 오류의 원인을 찾는데는 그리 오래 걸리지 않았다.

가장 기본적인 문법을 순간 까먹고 있던 것이다.

 

우선 기존 테스트 프로그램에 작성한 코드 중 메인 함수 부분의 일부다.

 

오류는 저 빨간 줄의 괄호 부분에서 발생했다.

아마 자바를 어느 정도 배우신 분들이라면 다 아시겠지만,

 

내가 작성한 인스턴스 생성 코드는 '특별한 매개변수가 없는 디폴트 생성자'가 있을 때 작동할 수 있다.

하지만 첫 번째 사진처럼, 실습 중 디폴트 생성자를 삭제하고 매개변수를 직접 지정한 생성자를 다시 구현해 둔 상황.

결국 해당 생성자에 들어가야 할 매개변수 값을 같이 적지 않아서 생긴 오류였던 것.

(사실 정말 기초적인 부분인데 순간 기억이 안 나서 책의 다른 예제를 훑어보다가 다행히 떠올림.

여기서 나는 아직도 멀었구나 생각함 ㅎㅎㅎ;;)

 

해결

 

원인을 알았다면 해결은 간단하다.

와, 진짜 다시 봐도 이건 너무 초보적인 실수였다.

 

처음에 구현한 생성자의 매개변수가 순서대로 (int customerID, String customerName)이었으니

그대로 적절한 값을 넣어주기만 하면 된다.

 

이렇게 문제 없이 디버깅과 실행을 마쳤다.

 

역시 외국어든 프로그래밍 언어든 기초적인 실수를 겪으며 많이 배우고 익숙해짐을 느낀 예시였다.

나 같은 입문자들이 이 글을 읽으며 기본적인 자바 사용방법을 되새길 수 있다면 더할 나위 없겠다.