반응형
생성자
- 인스턴스를 생성할 때 초기 수행할 명령이 있는 경우 미리 작성해두고, 인스턴스를 생성할 때 호출된다.
- 생정자 함수에 매개변수가 없는 생성자를 기본생성자라고 하며, 기본 생성자는 compiler에 의해 자동으로 추가 되었기 때문에 명시적으로 작성하지 않고 사용할 수 있다.
- 생성자의 작성 위치는 클래스 내부 필드 선언부와 메소드 선언부 사이에 작성한다.
생성자의 사용 목적
1. 인스턴스 생성 시점에 수행할 명령이 있는 경우 사용한다.
2. 매개변수 있는 생성자의 경우 매개변수로 전달 받은 값으로 필드를 초기화하며 인스턴스를 생성할 목적으로 주로 사용된다.
3. 작성한 생성자 외에는 인스턴스를 생성하는 방법을 제공하지 않는다는 의미를 가진다(초기값 전달 강제화)
기본생성자, 매개변수가 있는 생성자, 모든 필드를 초기화하는 생성자이다.
생성자 작성 방법
표현식 |
접근제한자 클래스명(매개변수) { 인스턴스 생성 시점에 수행할 명령 기술(주로 필드 초기화) this.필드명 = 매개변수; } |
1. 기본생성자 작성 방법
public class User {
(1) 인스턴스 생성
private String id;
private String pwd;
private java.util.Date enrollDate;
(2) 기본 생성자 작성
public User(){
System.out.println("User 클래스의 기본 생성자 호출함");
}
(3) setter, getter 작성
(4) 모든 필드가 가지고 있는 값을 문자열 합치기 하여 반화하는 메소드 작성
public String getInformation() {
return "User [id=" + this.id + ", pwd=" + this.pwd +", enrollDate="+ this.enrollDate + "]";
}
(5) 메인메소드에서 기본 생성자 호출하기
public static void main(String[] args) {
User user1 = new User();
System.out.println(user1.getInformation());
}
}
◇ 실행 결과
User 클래스의 기본 생성자 호출함...
User [ id=null, pwd=null, enrollDate=null ]
반응형
2. 매개변수가 있는 생정자 작성 방법
public class User {
(1) 인스턴스 생성
private String id;
private String pwd;
private java.util.Date enrollDate;
(2) 매개변수가 있는 생정자 작성
=> 초기화 하고 싶은 필드의 갯수별로 생성자를 여러 개 만들 수 있음.
public User(String id, String pwd){
this.id = id;
this.pwd = pwd;
System.out.pringln(User 클래스의 id, pwd를 초기화하는 생성자 호출함};
(3)메인메소드에서 id, pwdm 초기화 하는 매개변수 생성자 호출
public static void main(String[] args) {
User user2 = new User("user01","pass01")
System.out.println(user2.getInformation());
}
}
◇ 실행 결과
User 클래스의 id, pwd, name을 초기화하는 생성자 호출함
User [ id=user01, pwd=pass01, enrollDate=null ]
3. 모든 필드를 초기화하는 생성자
public class User {
public User(String id, String pwd,java.util.Date enrollDate) {
(1) 위의 매개변수가 있는 생성자에서 초기화한 필드를 호출
this(id,pwd)
=> this()는 동일 클래스 내에 작성한 다른 생성자 메소드를 호출하는 구문이다.
괄호 안에는 매개변수의 타입, 갯수, 순서에 맞는 생성자를 호출하고 복귀한다. (메소드와 동일)
this()는 가장 첫 줄에 선언해야 하며, 그렇지 않은 경우 compile error가 발생한다.
(2) 위의 생성자에 초기화하지 않았던 필드는 this.로 초기화하기
this.enrollDate = enrollDate;
System.out.println("User 클래스의 모든 필드를 초기화 하는 생성자 호출");
}
}
(3) 모든 필드를 초기화 하는 생성자 호출
public static void main(String[] args) {
User user3 = new User("user02", "pass01", new java.util.Date());
System.out.println(user3.getInformation());
}
}
◇ 실행 결과
User 클래스의 모든 필드를 초기화 하는 생성자 호출
User [ id=user02, pwd=pass02, enrollDate=Fri Jul 01 16:58:40 KST 2022 ]
반응형