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 |
댓글