조컴퓨터

기본 생성자를 선언하는 이유 본문

공부/Spring

기본 생성자를 선언하는 이유

챠오위 2022. 1. 25. 22:29

갑자기 궁금해져서 공부한다.

 

// Member.java
public class Member {

    private String username;
    private int age;

    // Overloading
    // Constructor1
    public Member() {
    }

    // Constructor2
    public Member(String username, int age) {
        this.username = username;
        this.age = age;
    }
}

 

파라미터가 있는 생성자를 만들었는데, 왜 매개변수(파라미터)가 없는 기본 생성자를 선언할까?

 

1) 상속받아야 할 때

해당 클래스를 상속받는 경우 에러가 발생한다. 오류 메세지는 Implicit super constructor Parent() is undefined for default constructor. Must define an explicit constructor 이며 Parent 클래스에 기본 생성자가 없는데 Child 클래스에서 기본 생성자를 이용해서 클래스를 생성하려고 하기 때문에 발생한다.

 

2) 매개변수 있는 생성자를 추가할 때

클래스를 처음 만들 때는 보통 생성자를 만들지 않는다. 생성자가 없을 때는 자바 컴파일러가 기본 생성자를 만들어 준다. 단, 매개변수가 있는 생성자를 만들었다면 상황이 달라진다. 이때는 자바 컴파일러가 기본 생성자를 만들지 않는다. 그러므로 매개변수가 있는 생성자를 만들 때는 기본 생성자를 생성하고 사용해야 한다.

 

 

 

참조)

1. 간단정리, 자바에서 기본 생성자의 의미 (feat. Java Reflection, Jackson, JPA) (velog.io)

 

간단정리, 자바에서 기본 생성자의 의미 (feat. Java Reflection, Jackson, JPA)

기본 생성자는 클래스에 아무런 생성자를 만들지 않았을 때, 자동으로 생성되는 생성자이다.이를테면, 다음과 같다.위와 같이 User 클래스를 만들었다면, 자동으로 다음과 같은 기본 생성자가 생

velog.io

2. Default Constructor in Java – Class Constructor Example (freecodecamp.org)

 

Default Constructor in Java – Class Constructor Example

In this article, we will talk about constructors, how to create our own constructors, and what default constructors are in Java. What is a constructor? As a class-based object-oriented programming term, a constructor is a unique method used to initialize a

www.freecodecamp.org

3. JAVA 기본 생성자가 없는 클래스를 상속받을 때 규칙 (devez.net)

 

JAVA 기본 생성자가 없는 클래스를 상속받을 때 규칙

java 규칙 중 상위클래스에 기본 생성자가 없는 클래스를 상석받는 경우 슈퍼클래스의 생성자를 호출해야 된다는 규칙이 있습니다. 테스트를 위해 기본 생성자가 없는 형태의 Parent 클래스를 작

blog.devez.net

4. 자바 생성자와 초기화 이야기 (tistory.com)

 

자바 생성자와 초기화 이야기

생성자란 메소드라기 보다는 객체의 생성과 초기화를 담당하는 특별한 기능이라고 볼 수 있다. 사실 생성자가 필요한 이유는 프로그램에서 변수를 초기화하는 것의 중요성에서 출발한다. 초기

plas.tistory.com

 

 

 

 

'공부 > Spring' 카테고리의 다른 글

#MVC 프레임워크 만들기 - v1, v2, v3, v4  (0) 2022.01.27
MVC 패턴  (0) 2022.01.26
HTTP 응답 데이터  (0) 2022.01.25
HTTP 요청 데이터  (0) 2022.01.25
쓰레드 풀  (0) 2022.01.24