본문 바로가기
공부방/자바프로그래밍

자바 생성자

by 오후 네시 2020. 7. 20.

1. 생성자의 특징

1) 특별한 형태의 method


2) 클래스 이름과 같은 method


3) 리턴타입이 없음


4) 객체(object)가 생성될 때 자동호출됨


5) 형식 :


자료형 클래스명 객체참조변수 = new 생성자;



2. 기본생성자와 매개변수가 있는 생성자

1) 기본생성자


① 매개변수가 없는 생성자.


② 없으면 컴파일러가 만들어 줌.


③ 코딩할 때 습관적으로 만드는 게 좋음.



2) 매개변수가 있는 생성자


① 생성자에 매개변수가 있음.


② 이게 있으면 컴파일러가 자동으로 생성자를 만들지 않음.


③ 이때 객체 생성할 때 생성자 호출을 잘해야 함. 안 그러면 에러 발생.


④ 메소드 오버로딩으로 이해할 수 있음.


3. 생성자 형식


1) void란 말이 붙으면 안 됨. 붙으면 일반 메소드가 됨


예) public Caculator(){};


2) private이 붙는 생성자도 있음.


생성자는 public을 붙이거나 안 붙이는 것이 일반적임.

그러나

클래스의 설계 목적상 생성자를 private으로 제한하는 경우가 있음. 이것을 singleton pattern이라고 한다.

웹 프로그래밍을 할 때 필요한 경우가 있다.


객체(인스턴스)를 여러 개 만들 수 없고 단 하나만 만들어야 하는 경우 생성자를 private으로 한다.

예를 들면,

도서 관리대장 : 100권의 도서가 있어도 관리대장은 1권만 필요.

사무용 프린터 : 여러 명의 직원이 근무하지만, 프린터는 공유함.


3) private 생성자 예제


private 생성자는 아래와 같은 방식으로 쓴다.


public class Singleton{

private static Singleton instance;


public static Singleton getInstance(){


 if ( instance == null){

    instance = new Singleton();

 }


 return instance;


}//end of getInstance


private Singleton(){

 System.out.println(“기본 생성자 호출”);

}//end of Singleton


} //end of class Singleton


instance는 변수명

정적변수이므로 초기값은  null임.(null -> 가리키는 내용이 없음을 의미)

static : 프로그램이 시작할 때부터 끝날 때까지 메모리에 있음.

static 이 붙은 코드는 반드시 이렇게 써야 함.


public class SingletonUse{


  public static void main(String[] args){


    Singleton a = Singleton.getInstance();

    Singleton b = Singleton.getInstance(); //안만들어짐


}//end of main


}//end of class SingletonUse


① Singleton a = Singleton.getInstance();

 -> static이 붙어 있는 변수 혹은 메소드는 이미 프로그램 시작할 때 메모리에 올라가 있으므로 new 연산자를 쓸 필요가 없다.

② static 변수들은 클래스 이름으로 접근한다. System.out.println에서 out이 대표적인 예이다.

③ 두 번째 객체변수인 b는 만들어지지 않는다.


4. this와 this()

1) this


객체 자신을 가리키는 참조변수

멤버변수와 지역변수의 이름이 같으면 구별하기 위해 멤버변수에 this.을 붙임.

지역변수는 초기화해야만 쓸 수 있고,

멤버변수는 초기화하지 않아도 쓸 수 있다.


2) this()


현재 클래스의 다른 생성자를 호출함.

예) this(“김상범”, 100,);


Tip :

1) static이 붙은 메소드에서는 같은 클래스라 할지라도 static이 붙지 않은 변수를 쓸 수 없다.

그래서 객체참조변수를 만들고, 그 변수를 통해서 써야 한다.


예)

public class VarTest{

  double b; //멤버변수는 기본값으로 초기화


  public  static void main(String[] args){

  VarTest v = new VarTest();


  System.out.println(v.b);

  }

}


2) 이클립스에서 생성자 자동 생성방법


ctl + space : 도움말에서 생성자 선택

혹은

마우스 우클릭 > source > 밑에서 두 번째 클릭 > 필요한 매개변수 선택 후 ok


3) super()


상속받은 클래스이면 부모클래스의 생성자를 호출함.


'공부방 > 자바프로그래밍' 카테고리의 다른 글

자바 다형성  (0) 2020.08.12
자바 final  (0) 2020.08.07
자바 static 변수(정적변수)  (0) 2020.07.30
자바 상속  (0) 2020.07.26
자바 클래스와 객체  (0) 2020.07.15
자바 Method(메소드)  (0) 2020.07.13
자바 배열  (0) 2020.07.05
자바 반복문(for, while, do while, break,continue)  (0) 2020.07.04

댓글