초보 프로그램 개발자

[ 3주차 ] Java - 생성자 본문

교육 일지/java

[ 3주차 ] Java - 생성자

Ji_HG 2023. 5. 16. 16:24
생성자

생성자는 메모리 할당을 받을 때 사용하며 변수를 초기화하는것이 목적이고,

class 이름과 동일해야 하며 return값이 없기 때문에 property(void,int...) 가 붙지 않는다.

생성자는 오버로딩(중복정의)가 가능하며 생성자에서 생성자를 호출할 수 있다.

단, 생성자에서 생성자를 호출할 경우 맨 위에 선두에서만 가능 하다.

 

- 기본적인 클래스 객체 생성 방법

package com.day9;


class TestClass1{
	private int x, y;
	
	public void set(int x, int y) {
		this.x = x;
		this.y = y;
	}
}

public class Test8 {

	public static void main(String[] args) {
		TestClass1 ob = new TestClass1(); // new 뒤의 TestClass1() 이 생성자
		ob.set(10, 20); // set 함수로 x와 y의 값을 초기화 해주어야 한다
	}
}

위의 코드에 생성자는 없지만 프로그램에서 자동으로 아무것도 없는 생성자를 만들어 준것이다.

(TestClass1 코드만 보면)

class TestClass1{
	private int x, y;
	
	public TestClass1() {
		
	}
	
	public void set(int x, int y) {
		this.x = x;
		this.y = y;
	}
}

TestClass1 메소드 안에 아무것도 없지만 메모리에 할당하겠다는 의미로 사용된다.

TestClass1 도 메소드로 인자값을 받을 수 있다.

package com.day9;


class TestClass1{
	private int x, y;
	
	public TestClass1() {
		
	}
	// 메소드 오버로딩
	public TestClass1(int x, int y) {
		this.x = x;
		this.y = y;
	}
	
	public void set(int x, int y) {
		this.x = x;
		this.y = y;
	}
}

public class Test8 {

	public static void main(String[] args) {
		TestClass1 ob = new TestClass1();
		ob.set(10, 20);
		
		TestClass1 ob2 = new TestClass1(10, 20);// set 함수 없이 생성시 초기화
	}
}

 

인자를 받는 생성자를 만들 경우 위의 빈 생성자도 꼭 만들어 주어야 하며,

개발자의 의도에 따라 빈 생성자 없이 무조건 인자를 받게 만들려면 빈 생성자를 지워주면 된다.