본문으로 바로가기

Java- 생성자(Constructor)

category 프로그래밍 언어/Java 2019. 7. 4. 23:21

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