CODE/JAVA1

VariableInit

maskan 2021. 1. 27. 16:03
public class VariableInit {

	// 명시적 초기화
	int var = 10;
	static int staticVar = 20;

	// 초기화 블럭 - 중괄호
	{
		var = 30;
	}

	static {
		staticVar = 40;
	}
		
	/*
	 * 생성자
	 * - 클래스와 같은 이름의 메서드
	 * - 인스턴스 변수를 초기화하기 위해 사용한다
	 * - 클래스에 생성자는 반드시 하나 이상 존재해야 한다
	 * - 직접 선언해주지 않으면 컴파일러가 기본 생성자를 만들어준다
	 * - 생성자는 리턴타입이 없다
	 */

	VariableInit() { // <생성자
		var = 50;
		// staticVar = 60;
		// 값을 공유해야하는 클래스 변수가 객체 생성시마다 계속 초기화되기 때문에
		// 클래스 변수를 생성자에서 초기화하는 것은 좋지 않다.

		// 생성자 사용 이유
		// 초기화에 여러줄의 코드가 필요할 때
		// 초기화에 파라미터가 필요할 때
	}

	public static void main(String[] args) {
		Init i = new Init();
		i.a = 10;
		i.b = 20;
		i.c = 30;

		Init i2 = new Init();
		i2.a = 40;
		i2.b = 60;
		i2.c = 80;

		Init it = new Init(70, 80, 90);
	}
}

class Init {
	int a;
	int b;
	int c;

	Init(int a, int b, int c) {
		this.a = a;
		this.b = b;
		this.c = c;
		// this : 인스턴스 변수와 지역변수의 이름이 같을 때 둘을 구분하기 위해 사용한다.
	}

	// 메서드의 이름은 중복될 수 있다
	// 오버로딩 : 같은 이름의 메서드를 여러개 정의하는 것
	// 파라미터로 메서드를 구분
	Init() {
		this(10, 20, 30);
		// this() : 생성자에서 다른 생성자를 호출할 때 사용한다.
		// 맨 첫줄에서만 사용 가능 (this 위에는 코드가 있을 수 없다)
		// 중복되는 코드를 제거하기 위해서
	}

}