
자바 코드에서 생성자는 무엇을 말할까요?
Car c1 = new Car();
위 코드에서 Car( ) 이 바로 생성자입니다.
( ) 안에 매개변수(Parameter) 가 아무것도 없는 것을 볼 수 있습니다.
이 처럼 매개변수가 없는 생성자를 기본 생성자 라고 합니다.
사용자가 생성자를 만들지 않으면 컴파일 시에 매개변수가 없는 기본생성자를 자동으로 만들어 줍니다.
단, 사용자가 생성자를 만들었을 시에는 기본생성자는 만들어지지 않습니다.
생성자가 하는 일은 객체가 될 때 초기화 하는 역할입니다.
예시를 들어봅시다.
public class Student {
String name;
int studentId;
//method has return type
public void func1(String name, int id){
String resultName = name.toLowerCase();
String resultId = "10"+Integer.toString(studentId);
System.out.println(resultName + " "+ resultId);
}
// Constructor has no return type
// if you want to use in the Class StudentExam
// you have to write down the name of student
public Student(String n, int id){
//value n pass on to the value name above
name = n;
studentId = id;
}
}
앞의 글에서는 class 에 생성자를 따로 써주지 않았기 때문에 기본 생성자가 생성되었다.
따라서 인스턴스화 할 때는 매개변수를 쓰지 않고 사용했다.
//car class
public class Car{
...
}
public class CarExam{
public static void main(String[] args){
Car c1 = new Car();
}
}
하지만 Student 클래스는 기본 생성자를 사용 하는 것 이 아닌,
매개변수를 넘겨 받아야합니다.
public class StudentExam {
public static void main(String[] args) {
Student st1 = new Student("SARA",1234);
/*Student st2 = new Student();*/
st1.func1(st1.name, st1.studentId);
}
}
st2 에 매개변수를 입력하지 않았을 때에는 Student 에 맞지 않기 때문에 오류가 뜨는 것을 확인할 수 있습니다.

이 부분을 유의하여 코드를 작성해 주시면 됩니다.
위의 코드를 실행하면 메소드와 생성자 모두 잘 작동하여 아래와 같은 결과가 나옴을 알 수 있습니다.
