본문 바로가기
IT/Java

생성자

by 봉즙 2019. 6. 23.

생성자 : 인스턴스가 생성될때 호출되는 인스턴스 초기화 메서드, 인스턴스 변수의 초기화 작업에 사용

생성자의 조건

  1. 생성자의 이름은 클래스의 이름과 같아야 한다.
  2. 생성자는 리턴 값이 없다.
클래스이름(타입 변수명, 타입 변수명, ....){
//인스턴스 생성시 수행될 코드,
//주로 인스턴스 변수의 초기화 코드를 적는다.
}

※ 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것은 아니다.

 

Card c = new Card();
  1. 연산자 new에 의해서 메모리(heap)에 Card 클래스의 인스턴스가 생성된다.
  2. 생성자 Card()가 호출되어 수행된다.
  3. 연산자 new의 결과로, 생성된 Card인스턴스의 주소가 반환되어 참조변수 c에 저장된다.

 

기본생성자 : 모든 클래스 내에는 반드시 하나 이생의 생성자가 정의되어 있어야한다. 클래스 내에 생성자가 하나도 없는 경우 컴파일러가 자동생성

클래스이름() {}

 

매개변수가 있는 생성자 :  인스턴스를 생성하는 동시에 원하는 값으로 초기화 할 수 있다.

Car c= new Car("white", "auto", 4);

 

생성자에서 다른 생성자 호출

  • 생성자의 이름으로 클래스 이름대신 this를 사용한다.
  • 한 생성자에서 다른 생성자를 호출할 때에는 반드시 첫줄에서만 호출이 가능하다.
    (이유 : 생성자 내에서 초기화 작업도중 다른 생성자 호출시, 호출된 다른 생성자 내에서도 멤버변수의 값을 초기화하게 되므로 다른 생성자를 호출하기 이전 초기화 작업이 무의미 해질수 있기  때문)
Car(String color, String geraType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}//this.color는 인스턴스 변수이며, color는 생성자의 매개변수로 정의된 지연변수이다.
//color = color의 형태로 지역변수로 간주된다.

this : 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장, 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재,

this(), this(매개변수) : 생성자, 같은 클래스의 다른 생성자를 호출시 사용

 

인스턴스를 생성 할 때는 다음의 2가지 사항을 결정해야한다.

  1. 클래스 - 어떤 클래스의 인스턴스를 생성할 것인가?
  2. 생성자 - 선택한 클래스의 어떤 생성자로 인스턴스를 생성할 것인가?\

 

변수의 초기화 : 지역변수는 사용하기 전에 반드시 초기화 해야한다. 멤버변수(클래스 변수와  인스턴스 변수)는 자동적으로 기본값으로 초기화가 되지만 지역변수의 초기화는 필수적이다.

 

멤버 변수의 초기화 방법

  1. 명시적 초기화 : 변수의 선언과 동시에 초기화하는 것
  2. 생성자
  3. 초기화 블럭
    • 인스턴스 초기화 블럭 : 인스턴스 변수를 초기화 하는데 사용 (블럭 안에서 초기화 ex. 반복문, 조건문 등)
    • 클래스 초기화 블럭 : 클래스 변수를 초기화 하는데 사용 (static을 붙여주면 된다)

'IT > Java' 카테고리의 다른 글

Overriding  (0) 2019.06.25
상속, 포함 관계  (0) 2019.06.24
Overloading  (0) 2019.06.23
JVM 메모리 구조  (0) 2019.06.23
OOP  (0) 2019.06.22

댓글