자바 개발 9일차 - 기본 생성자

김경빈·2022년 12월 22일
0
post-custom-banner

오늘은 후배에게 기본 생성자에 대해 에러가 발생하였다고 해서 질문을 하였다.

아래와 같은 기본 생성자의 예제에서는 에러가 발생되지 않았다고 했다.

하지만 위의 코드와 같이 public a20221224(int a) {} 를 추가하자 에러가 일어났다고 하여 기본 생성자에 대해서 알아보았다.

에러가 난 이유는 매개변수가 있는 생성자가 있을 때는 자동으로 기본 생성자를 만들어주지 않는다. 따라서 위의 예제는 존재하지 않는 생성자를 호출하고 있다. 이 문제를 해결하기 위해서는 아래와 같이 기본 생성자를 추가해줘야 한다.

위의 코드는 이해를 돕기 위하여 생활코딩 강좌에 나와있는 예제이다. 위의 예제를 실행시키면 오류가 나오게 된다. 오류의 원인으로는 상위 클래스인 Calculator의 생성자가 존재하지 않기 때문이다. 하위 클래스가 호출될 때 자동으로 상위 클래스의 기본 생성자를 호출하게 되는데, 상위 클래스에 매개변수가 있는 생성자가 있다면 자바는 자동으로 상위 클래스의 기본 생성자를 만들어주지 않는다. 따라서 존재하지 않는 생성자를 호출하게 되기 때문에 에러가 발생했다. 이 문제를 해결하기 위해서는 아래와 같이 상위 클래스에 기본 생성자를 추가하면 된다.

이외에도 상위 클래스를 가리키는 super 라는 키워드 또한 존재한다.

super 키워드는 부모 클래스를 의미한다. 여기에 ()붙이면 부모 클래스의 생성자를 의미하게 된다. 이렇게 하면 부모 클래스의 기본 생성자가 없어져도 오류가 발생하지 않는다.

하위 클래스의 생성자에서 super를 사용할 때 주의할 점은 super가 가장 먼저 나타나야 한다는 점이다. 즉 부모가 초기화되기 전에 자식이 초기화되는 일을 방지하기 위한 정책이라고 생각하자.

배움의 길은 끝이 없는것 같다. 매일매일 코드를 직접 쳐보고 새로운 기술을 습득하여도 인간은 망각의 동물이므로 자주 까먹게 되버린다.. 나 또한 현재보다 더욱 발전하여 나만의 간결하고 깔끔한 알고리즘을 만들어보고싶다.

profile
매일매일 무한한 근성으로 코드를 작성합니다.
post-custom-banner

0개의 댓글