Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Min's dev-log

[JAVA] 생성자 본문

JAVA

[JAVA] 생성자

minyy 2023. 5. 2. 01:08

생성자

함수의 한 종류로 클래스와 이름이 같다.

new 연산자와 함께 객체(인스턴스)를 생성한다.

또한 기본생성자가 디폴트로 존재하며, 주로 오버로딩하여 사용한다.

 

★ 기본생성자(디폴트생성자)

인자(input,매개변수,..)가 없는 생성자이며 기본 제공되는 생성자이다.

단 1개라도 생성자를 사용자가 정의하게 된다면, 더이상 기본제공 되지않는다.

"클래스로부터 객체를 생성하려면 반드시 생성자가 필요함!" -> 기본으로 제공

당연히 반죽을구워서 객체를 만들어 먹을거라고 생각하고 반죽(기본생성자)을 기본으로 제공하는 것이다.

 

생성자의 형태

클래스명(input)

: output이 없다. 당연히 객체가 반환되기 때문이다.

  return도 쓰지않는다.

 

생성자 호출할 때 제일 처음이

클래스(){

            // 멤버변수 전체를 선언한 후에 매개변수로 받은 것을 세팅해주고

            // 안 받는것은 결과를 보고 유추해서 세팅해준다. }

★ 생성자의 역할 : 멤버변수 초기화 ★

 

+ 생성자를 만들 때 대체적으로 받은 값이 어디로 가는지 주목하면 된다!

기존멤버(부모의 멤버)한테 가면 -> super()

나한테만 있는 멤버(자식의 멤버)한테 가면 -> this.

 

 

생성자 오버로딩

class Circle{
	String name;
	int radius;
	void info() {
		System.out.println(name+": "+radius);
	}

	// 생성자 오버로딩 : "함수명 중복정의" 인자가 다름
	// 생성자는 output이 당연히 객체이기때문에 쓰지않는다.

	Circle(){ 
// 나중에 만들고싶을 때,그냥 기본생성자 만들어서 나중에 값을 넣어주고싶을 때
		System.out.println("기본생성자");
	}
	Circle(String n, int r){ // 생성자 함수, 인자 두개, 내 멤버 변수를 초기화하는데 쓴다
		name=n;
		radius=r;
		System.out.println("내가 정의한 생성자");
	}
// 이 생성자만 선언시에 에러 -> Circle c1=new Circle();(기본생성자)에 에러가 생긴다.
// => Circle(String n, int r)생성자를 정의해서 기본생성자를 제공안하게 되어서 에러가 생긴것
// 기본생성자도 따로 만들어주면 된다.
	
}
public class Test04 {
	public static void main(String[] args) {
		// + 인자가 없는 생성자 = 기본생성자를 쓰고있는것(우리눈에 안보일뿐 숨어있기때문에 돌아간다)
		
		Circle c1=new Circle(); // 기본 생성자
		// => ★ 클래스를 하나 만들면 기본생성자를 무조건 하나 제공해준다
		// 생성자를 하나 이상 만들게 되면 더이상 기본생성자는 제공되지않아서 따로 만들어줘야한다
		c1.name="도넛";
		c1.radius=10;
		Circle c2=new Circle("피자",100);  // 생성자(): 생성자함수
		
		c1.info();
		c2.info();
	}
}

 

'JAVA' 카테고리의 다른 글

[JAVA] 객체 배열  (0) 2023.05.03
[JAVA] 클래스 변수  (0) 2023.05.03
[JAVA] 클래스와 객체  (0) 2023.05.01
[JAVA] 객체 지향 언어  (0) 2023.05.01
[JAVA] 함수 유형별로 알아보기+ call by value / call by reference  (0) 2023.04.30
Comments