생성자란 객체가 생성과 동시에 객체 안의 데이터 값을 설정(초기화)하는 코드.
생성자의 이름은 반드시 클래스의 이름과 같아야 하고, 리턴 타입이 없다.
객체 지향 프로그래밍도 초기화에 해당하는 기능이 제공되는데 이것을 생성자(constructor)라고 한다.
생성자(constructor) : 그 어떠한 메소드보다 먼저 실행됨. 초기화작업을 함. 인스턴스를 생성하는 자.
클래스 이름과 똑같은아이 - 생성자
기본생성자를 정의해주지 않으면 null or 기본값으로 초기화하게 됨.
생성자 : parameter가 있는 생성자, 아무것도 들어가지 않는 생성자라고도 함.
<예시>
class Person{
String name;
int age;
Person(String name, int age){ Person클래스의 객체 필드를 초기 설정하는 생성자를 만들고, 문자열 값을 담는 name 파라미터 변수와 age 파라미터 변수를 인자로 받는다.
this.name = name; 이 클래스로 생성된 객체 안의 name 변수에 name 파라미터 변수를 저장한다.
this.age = age; 이 클래스로 생성된 객체 안의 age 변수에 age 파라미터 변수를 저장한다.
* this 는 객체 자신을 가리키는 키워드
############### 생성자의 특징 ##################
- new를 사용하면 반드시 호출된다.
- 클래스 객체가 생성될때 반드시 하나의 생성자가 호출된다.
- 생성자가 없으면 default생성자가 있는것으로 인식한다.
- 생성자의 첫번째 라인으로 this생성자를 사용하여 또 다른 생성자 하나를 호출할 수있다.
- 리턴값을 반환하지 않는다.
생성자는 인스턴스를 생성해주는 역할을 하는 특수한 메소드라고 할 수 있다. 그런데 반환 값이 있다면 엉뚱한 객체가 생성될 것이다. 따라서 반환 값을 필요로하는 작업에서는 생성자를 사용하지 않는다. 반환 값이 없기 때문에 return도 사용하지 않고, 반환 값을 메소드 정의에 포함시키지도 않는다. - 생성자의 이름은 클래스의 이름과 동일하다.
자바에서 클래스의 이름과 동일한 메소드는 생성자로 사용하기로 약속되어 있다. - 생성자는 메소드처럼 오버로딩이 가능하다. 즉, 같은 이름의 생성자를 파라미터와 처리동작을 다르게 하여 여러번 정의할수 있음.
* 이클립스에서 생성자 자동으로 만들기 : 생성자 코드 만들기 원하는 위치 마우스 오버롤 -> 이클립스 상단의 source -> Generate Constructor using Field... 클릭
'Java' 카테고리의 다른 글
오버라이딩(Overriding) 과 오버로딩(Overloading) (0) | 2019.05.23 |
---|---|
상속 (0) | 2019.05.23 |
유효범위 (0) | 2019.05.23 |
객체 지향 프로그래밍 (0) | 2019.05.21 |
주차관리 시스템 (0) | 2019.05.20 |