//들어가기 전에 초기화의 예
public class VariableInit {
//명시적 초기화
int var = 10;
static int staticVar = 20;
//초기화 블럭
//초기화하는데 로직이 필요할 경우 한줄이 아닌 여러줄이 필요한 경우 사용
{
var = 30;
}
static{
staticVar = 40;
}
}
생성자
- 클래스와 같은 이름의 메서드
- 인스턴스 변수*를 초기화하기 위해 사용한다.
- 클래스에 생성자는 반드시 하나 이상 존재해야 한다.
- 직접 선언해주지 않으면 컴파일러가 기본 생성자를 만들어준다.
- 생성자는 리턴타입이 없다.
** 인스턴스 변수 : static이 붙지 않은 변수
public class VariableInit {
VariableInit(){ //생성자
var = 50;
// static = 60; //생성자에서 초기화 X
}
}
같은 이름의 메서드를 여러개 정의하는 것
class Init{
int a;
int b;
int c;
Init(int a, int b, int c){
this.a = a;
this.b = b;
this.c = c;
// 인스턴스 변수와 지역변수 구분
}
Init(){
// a = 10;
// b = 20;
// c = 30;
this(10, 20, 30);
//다른 생성자를 호출
}
}
this, this()
public static void main(String[] args){
Init i = new Init();
i.a = 10;
i.b = 20;
i.c = 30;
Init i3 = new Init(70, 80, 90)
}
public class ClassMaker {
//인스턴스변수 하나를 선언하고 명시적으로 초기화 해주세요.
int Var = 1;
//위에서 선언한 인스턴스변수를 초기화 블럭을 사용해 초기화 해주세요.
{
Var = 10;
}
//위에서 선언한 인스턴스변수를 생성자의 파라미터를 사용해 초기화 해주세요.
ClassMaker(int var){
this.Var = var;
}
//위에서 선언한 인스턴스변수를 생성자를 하나 더 만들어서 초기화 해주세요.
ClassMaker(){
this(50);
}
//초기화 순서 : 명시적 초기화->초기화 블럭->생성자(코드의 위치는 상관 X)
}