Programming/Java_자바

[JAVA 기초] 생성자

LEFT 2021. 12. 8. 22:34

Example

Student studentLee = new Student(); 

Explain

라는 코드에서 Student()"생성자"를 의미한다.
그렇다면 public Student() { } 처럼 기본생성자를 넣어주어야하지만

코드에는 없어도 실행이 잘되는 것을 확인할 수 있다.
왜냐하면 자바 컴파일러가 자동적으로 추가해 실행해주기 때문인데, 
자바 컴파일러는 클래스에 생성자가 하나도 없는 경우에 기본생성자를 알아서 추가해서 실행해주는 특징이 있다.

<기본 생성자>

* 특징

1. 매개변수가 없음

2. 하나의 클래스에는 반드시 적어도 하나 이상의 생성자가 존재해야함

3. 프로그래머가 따로 지정하지 않으면 컴파일러가 기본생성자를 자동으로 코드에 추가해줌

4. 만약 매개변수가 있는 생성자를 추가하게 된다면 기본생성자는 제공되지 않음

Question


Q1. 만약 생성자가 하나라도 있다면
A1. 컴파일러는 기본생성자를 제공해주지 않는다.

Q2. 생성자는 언제 활용할 수 있는지
A2. 예시를 들어 설명해보면

Student의 변수로 ID, address, grade 등 기본적인 특성은 가진채 생성되어야한다라고 가정하고싶으면

생성자를 이용한다.

example)

public Student(int id, String name) // 이 학생이 생성될땐 아이디와 이름이 무조건 넘어와야한다.
{ 
	studentID = id;
	studentName = name;
}


Q3. 생성자는 중복될 수 있는지

public Student() {}

public Student(int id, String name)
{
	studentID = id;
	studentName = name;
}

 

A3. 이 코드처럼 동일한 이름을 가진 생성자는 존재하지만 매개변수가 다르므로 가능하다.

= 이런경우를 '생성자 오버로딩' 이라고함

++
- 생성자는 반환타입이 없다.
- 생성자는 인스턴스를 초기화 할때의 명령어 집합을 말한다.
- 생성자의 이름은 그 클래스의 이름과 같다.
- 생성자는 메소드가 아니고, 상속되지 않으며, 반환값이 없다.