본문 바로가기

Java/문법

7-3장 생성자

- 생성자 (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