반응형
※ 생성자는 메소드와 비슷한 모양을 가지고 있으나, 리턴타입이 없고 클래스 이름과 동일하다.
▶ 생성자 선언 방법
클래스 ( 매개변수선언, -----) {
//객체의 초기화코드}
▶ 기본생성자
- 모든 클래스에는 생성자가 반드시 존재하며, 생성자를 하나이상 가질 수 있다.
- 생성자를 선언하지 않아도 컴파일러가 기본생성자를 바이트코드에 자동으로 추가하기때문에 new 연산자로 생성자를 호출해서 객체를 생산할 수 있다.
public Class Members{
public Members(){ } <--- 매개값을 준 다른 생성자가 없을 시 자동생성
}
Members member = new Members(); <-- 기본생성자를 호출해서 객체를 만든다.
Members members = new Members("캐롤", "a1111");
Members 생성자를 2개의 매개값을 주고 호출
public Class Members{
필드 기본값으로 선언
String mid;
String mpw;
Members(String mid, String mpw){ <--- 두개의 매개값을 받기위해 같은 타입의 매개변수선언
this.mid = mid;
this.mpw = mpw; <--받은 매개값을 이용해서 필드 선언.( 필드에 값을 저장.)
}
}
mid = 캐롤
mpw = a1111 이 된다.
↑ 위와 같이 매개값을 주고 생성자를 하나라도 만들면 기본생성자가 자동생성 되지않기때문에 기본생성자를
호출할 수 없다. 이럴 때는 기본생성자를 직접 만들어주어야 호출할 수 있다.
public Class Members{
String mid;
String mpw;
public Members(){
} <--직접 만들어준다.
Members(String mid, String mpw){
this.mid = mid;
this.mpw = mpw;
}
- 필드가 외부에서 제공되는 다양한 값들로 초기화되어 사용되어야 한다면, 생성자에서 초기화해서 사용한다.
- 객체 생성시 생성자의 매개값을 받아 필드값을 초기화해준다.
- 생성자의 매개변수 이름은 일반적으로 필드와 동일한 이름을 사용한다. 그러나 이렇게 되면 필드와 매개변수의 이름이 동일하기때문에 생성자내부에서 필드에 접근할 수 없다. (매개변수가 필드보다 우선순위가 더 높기때문이다.)
- 해결방법은 필드앞에 this. 를 붙여 사용한다. this. 는 객체 자신의 참조(객체자신을 this라고 한다.)
반응형
'자바의 정석' 카테고리의 다른 글
인스턴스 멤버와 정적 멤버 (0) | 2022.04.15 |
---|---|
메소드 Method (0) | 2022.04.12 |
필드 Field (0) | 2022.04.11 |
클래스 Class (0) | 2022.04.11 |
객체 지향 프로그래밍 기본 개념 (0) | 2022.04.10 |