클래스의 구성요소
1. 멤버변수(필드)
2. 메서드
3. 생성자
생성자
역할
- 생성자가 최초로 호출이 되면서, 클래스 인스턴스를 생성하는 역할
- 클래스 인스턴스를 생성하면서 heqp 영역에 할당이 되고, 멤버변수를 초기화함
특징
- 생성자는 클래스의 인스턴스 생성 시에 최초로 사용이 됨
- 인스턴스 생성 시에 new 클래스명() 코드를 사용하는데, 이것이 생성자(기본 생성자)
- 즉, Student( )가 Student 클래스의 생성자
// 생성자 호출 Student s = new Student();
- 즉, Student( )가 Student 클래스의 생성자
- 인스턴스를 메모리에 생성(객체 생성)하려면 생성자를 호출해야 함
- 생성자의 이름은 반드시 클래스명과 동일해야 함
생성자 형식
[접근 제한자] 클래스명( [매개변수] ) {
멤버변수 초기화 코드 //멤버변수에 값을 지정하는 코드
}
- 클래스명과 생성자의 이름은 같고
- 메서드 형식과 유사하고
- 리턴 타입이 없음
생성자의 종류
- 기본 생성자(매개변수가 없는 생성자)
- 매개변수가 있는 생성자
[ 생성자 메서드 오버로딩 ]
기본 생성자와 매개변수가 있는 생성자는
생성자의 이름(메서드명)은 모두 같고
매개변수의 개수, 타입, 순서 등이 다르게 사용함
생성자 예시
class Animal {
String name;
String age;
public Animal() { // 기본생성자: 매개변수가 없음
}
public Animal(String name) { // 매개변수 1개 있는 생성자
this.name = name;
}
public Animal(int age) { // 매개변수 1개 있는 생성자
this.age = age;
}
public Animal(String name) { // 매개변수 2개 있는 생성자
this.name = name;
this.age = age;
}
}
✔ 기본 생성자
정의
- 매개변수가 없는 생성자
- 디폴트 생성자
기본 생성자의 형식
public 클래스명() {
}
- 생성자의 이름은 반드시 클래스 명과 일치
- 매개변수가 없음
예시
public class Student {
// 멤버변수(필드)
String name;
int grade;
// 생성자
public Student() {} // 기본 생성자: 생략하면, 컴파일 시에 컴파일러가 자동으로 추가해줌
// 메서드
public void getStudentName{
System.out.println("학생의 이름은 " + name + "입니다.");
}
}
기본 생성자의 특징
1. 기본 생성자를 호출하여 인스턴스 생성하면, 인스턴스의 멤버변수는 기본 값으로 초기화 됨
- name은 String 타입이므로 name = null; 으로 초기화
- grade는 int 타입이므로 int = 0;으로 초기화
매개변수가 있는 생성자를 호출하여 인스턴스 생성하는 경우에는
인스턴스의 멤버변수는 매개변수의 값으로 초기화 됨
2. 클래스에서 기본 생성자를 생략하면, 컴파일러가 컴파일 시에 기본 생성자를 자동으로 추가해줌
- 인스턴스를 생성하기 위해 기본 생성자를 호출했을 때
- 기본 생성자를 별도로 생성하지 않았더라도(코드로 작성하지 않았더라도)
- 컴파일 시에 기본 생성자를 자동으로 추가해주므로
- 인스턴스 생성과 멤버변수의 값이 초기화가 됨
3. 매개변수가 있는 생성자를 만들었을 때는 기본 생성자가 자동으로 추가되지 않음
- 별도로 기본 생성자를 추가해주어야 함
✔ 매개변수가 있는 생성자
매개변수가 있는 생성자를 사용하는 이유
- 클래스 인스턴스 생성 시에 멤버변수가 많은 경우, 일일이 초기화 하기가 불편
- 일반적으로 인스턴스의 멤버변수들은 생성자를 이용하여 초기화 하는데,
- 초기화할 값을 넣어 생성자를 호출하면, 이를 매개변수가 받아 값을 초기화함
매개변수가 있는 생성자의 형식
- 생성자의 이름은 반드시 클래스명과 일치
- 매개변수의 타입과 순서에 맞게 매개변수를 넣어야 함
예시
public class Student {
// 멤버변수(필드)
String name;
int grade;
// 기본 생성자
public Student() {} // 기본 생성자: 생략하면, 컴파일 시에 컴파일러가 자동으로 추가해줌
// 매개변수 있는 생성자
public Student(String name) { // 매개변수 1개
this.name = name;
}
public Student(int grade) {
this.name = grade;
}
public Student(String name, int grade) { // 매개변수 2개
this.name = name;
this.grade = grade;
}
// 메서드
public void getStudentName{
System.out.println("학생의 이름은 " + name + "입니다.");
}
}
매개변수가 있는 생성자를 호출
- 생성자 호출 시, 매개변수의 개수와 타입이 일치하는 생성자를 호출함
[ 에러 발생 ]
만일, 호출하는 생성자가 존재하지 않을 때에 에러 발생
✔ 생성자 사용 시에 주의할 점
사용자가 직접 생성자를 구현하여 사용하는 경우
(예를 들어, 매개변수가 있는 생성자를 직접 생성해서 사용하는 경우 등)
- 컴파일러가 기본 생성자를 자동으로 추가해주지 않으므로
- 기본 생성자를 함께 작성해주어야 함
'JAVA' 카테고리의 다른 글
[JAVA] 변수와 데이터 타입(기본형 타입, 참조형 타입) (0) | 2024.04.18 |
---|---|
[JAVA] 오버로딩(메서드 오버로딩, 생성자 오버로딩) (0) | 2024.04.18 |
[JAVA] 클래스, 객체, 인스턴스(인스턴스 생성 및 사용) (0) | 2024.04.17 |
[JAVA] instance 메서드, static 메서드 (0) | 2024.04.17 |
[JAVA] 메서드(리턴 타입의 유무, 매개변수 유무), 지역변수 (0) | 2024.04.17 |