- 생성자 (constructor)
- 객체를 생성하는 역할을 지닌 클래스의 내부 구성 요소
- 필드의 초기화 수행
1. 생성자의 특징
1) 반드시 클래스명과 동일한 이름으로 지어야함
2) 메서드와 비슷한 구조를 지니고 있지만, 리턴타입이 없다.
- 클래스명(입력매개변수) {
}
class A {
A() {
//...
}
}
2. 기본 생성자의 자동 추가
- 기본 생성자
- 입력매개변수가 없는 생성자
- 모든 클래스는 생성자를 포함해야 함
- 클래스 ( 붕어빵 기계), 객체 (붕어빵) , 생성자(붕어빵을 찍는 기능)
- 컴파일러는 생성자가 없는 클래스를 만들면 적어도 1개의 생성자가 필요하므로 입력 매개변수가 없는 기본 생성자를 추가해줌
- 컴파일러로 기본 생성자가 자동으로 추가된 클래스
class A [
int m;
void work() {...}
A() { //컴파일러가 자동으로 기본 생성자 추가
}
- 생성자가 호출되는 것만으로도 객체가 내부적으로 생성
- 생성자의 실행문은 객체가 생성된 이후 할일이 작성되는 부분
- 기본 생성자가 아닌 생성자를 포함하고 있는 클래스
class A {
int m;
void work() {...}
A(int k) { //생성자가 이미 있으므로 기본 생성자는 추가되지 않음
m=k;
}
}
- 클래스 A는 이미 있는 생성자를 사용해 객체를 생성할 수 있음 그러므로 컴파일러가 기본 생성자를 추가해 줄 이유가 전혀 없음
3. 생성자와 객체의 생성 방법
- 생성자의 모양에 따라 객체를 생성하는 방법이 결정
- 기본 생성자만 존재 -> 기본 생성자 모양으로만 객체 생성
- int형을 입력매개변수로 포함하고 있는 생성자 -> int형 값을 입력으로 받는 생성자를 호출해야 객체 생성
- 오버로딩 가능
- 메서드처럼 생성자의 입력매개변수 자료형이나 개수에 따라 여러 개의 생성자 정의 가능
package createobject;
class A {
A() {
System.out.println("첫 번째 생성자");
}
A(int a) {
System.out.println("두 번째 생성자");
}
A(int a, int b) {
System.out.println("세 번째 생성자");
}
}
public class createobject_10 {
public static void main(String[] args) {
A al = new A();
A a2 = new A(3);
A a3 = new A(3,5);
}
}
- 클래스 A에 서로 다른 내용의 생성자 3개가 오버로딩돼 있다면 클래스 A로 객체를 만드는 3가지 방법이 존재
'Java > 문법' 카테고리의 다른 글
8-1장 패키지와 임포트 (0) | 2023.04.24 |
---|---|
7-4장 this 키워드와 this() 메서드 (0) | 2023.04.24 |
7-2장 메서드 (0) | 2023.04.24 |
7-1장 필드 (0) | 2023.04.24 |
6-2장 객체의 생성과 활용 (0) | 2023.04.24 |