1. 생성자
생성자는 클래스 내 인스턴스 생성 초기 실행되는 메소드입니다.
인스턴스 변수의 초기화를 할 때 사용됩니다.
클래스의 이름과 동일하며 반환은 사용하지 않습니다.
또한 앞서 배운 오버로딩이 존재합니다.
Class A{
int a;
public A(){
}
public A(int a){
this.a = a;
}
}
2. 생성자의 특징
생성자는 기본적으로 만들지 않아도 알아서 생성이 됩니다.
하지만 오버로딩을 한 생성자가 존재할 경우 직접 기본 생성자를 명시를 해주어야 에러가 발생하지 않습니다.
위 코드에서 public A(){} 가 존재하지 않는다면 에러가 발생합니다.
class A {
String a;
String b;
int c;
A() {
this("a", "b", 4);
}
A(String a) {
this(a, "b", 4);
}
A(String a, String b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
위 코드에서 this와 this()가 존재합니다.
this는 인스턴스의 주소가 들어가있고 이를 참조해서 생성자를 통해 초기화를 시킵니다.
this()는 A클래스 내 다른 생성자를 호출합니다.
3. 인스턴스 복사
A(A a2) {
a = a2.a;
b = a2.b;
c = a2.c;
}
위 코드처럼 생성자를 통해서 인스턴스를 복사할 수 있습니다.
복사한다는 뜻은 같은 인스턴스를 같는 다는 뜻입니다.
class A {
String a;
String b;
int c;
A() {
this("a", "b", 4);
}
A(A a2) {
a = a2.a;
b = a2.b;
c = a2.c;
}
A(String a, String b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
위에서 두 번째 생성자를 보면 생성자의 매개변수에 A클래스가 들어간 것을 볼 수 있습니다.
이 인자에 있는 클래스의 인스턴스 변수를 복사하여 같은 것을 만든다는 뜻입니다.
public class aTest {
public static void main(String[] args) {
A aOne = new A();
A aTwo = new A(aOne); //복사 실행
}
메인에서 이런식으로 복사를 진행할 수 있습니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java- 오버라이딩 (0) | 2019.07.07 |
---|---|
Java- 변수 초기화 (0) | 2019.07.07 |
Java- 가변인자 (0) | 2019.07.04 |
Java - Overloading (0) | 2019.07.03 |
자바 제네릭 반복문 문제점 (0) | 2019.06.20 |