코드 그라데이션

Day16 (1). 생성자 본문

Java/Mega

Day16 (1). 생성자

완벽한 장면 2023. 4. 5. 02:48

생성자

: 객체를 생성할 때 필요한 함수 // 이 정도로 정리하면 충분.

 

Class A{

     int a; // 멤버변수(속성)

     void print(int a // 매개변수 또는 인자){  // 메소드(기능)

               int b; // 메소드변수 또는 지역변수

     }

     // default 생성자 -> 선언을 안하면 자동 추가

     A(){

     }

}

 

내가 생성자를 따로 선언할 수도 있다.

 

디폴트 생성자는 선언이 안 되어 있을 때 자동 추가되는 것이고,

만약 다른 것이 선언 되어 있으면, 추가되지 않는다.

생성자를 명시적으로 선언할 때, 디폴트 생성자와 동일한 형태로 만들 수도 있다. ????

 

A a = new A();
     생성자(default 생성자)

Class B{
   B(int a, int b){ 
   }

}

 

생성자의 형태를 따라줘야 객체를 만들어준다(클래스 만들 때)

 

예시

B b = new B(); (X) 에러

B b= new B(5,7); (O) 생성됩니다.

 

즉...

※ 생성자를 선언하면 무조건 그 형식으로 만들어야 한다.

매개변수의 개수와 자료형을 맞춰서 제공을 해줘야 객체가 생성된다.

 

 

A a = new A();
     생성자(default 생성자)

Class B{
   B(int a, int b){ 
      기능
      => 조건문, 반복문, 연산 이 가능하다!
      cf. return 안 됨.
   }

}

 

생성자와 메서드 비교

=> 비슷하다.

 

비슷한 점

1. 매개변수를 사용한다. 

=> 개수 제한이 없다

2. 메소드처럼 반복문 또는 조건문을 사용해서 기능을 만들 수 있다.

 

다른 점

1. 생성자는 이름을 무조건 클래스명과 동일하게 해야 한다.

2. 메소드와 다르게 생성 시 한번만 호출된다

=> 각 객체를 만들 때 한 번씩만 호출된다는 뜻

     즉, 객체 10개를 만들게 되면 10번 호출이 된다는 것...

3, 리턴을 할 수 없다

=> 생성자는 무조건 객체를 반환하지.

 

 

예시

package Day16;

class B{
	static int a1;
	int b1;
	B(int a, int b){
		a1 = a;
		b1 = b;
	}
}

public class CTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		B b = new B(5,7); //a1 ?? 0 b1 ?? 0 말하고 싶지 않아요.
		b.a1 = 20;
	}

}

 

728x90

'Java > Mega' 카테고리의 다른 글

Has 관계 예제  (0) 2023.04.05
Day16 (2). 생성자(2), HAS 관계  (0) 2023.04.05
Day15. 클래스 도입  (0) 2023.04.05
Day14. 재귀함수의 개념  (0) 2023.04.05
Day14. 별찍기+구구단 메서드화  (0) 2023.04.02
Comments