코드 그라데이션
Day16 (1). 생성자 본문
생성자
: 객체를 생성할 때 필요한 함수 // 이 정도로 정리하면 충분.
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;
}
}
'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 |