생성자(Constructor) 메소드
생성자 메소드는 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드이다.
생성자명은 반드시 클래스명과 동일해야하며 클래스를 메모리에 생성 시 자동 호출된다.
생성자 메소드는 returnType(결과형)이 없다. 따라서, 생성자 앞에 void를 넣지 않는다.
클래스 안에 생성자가 하나도 없을 시에는 자동으로 기본(default) 생성자를 호출한다. - (기본 생성자)
## 기본 생성자는 인수가 없는 메소드 이다.
생성자 Overload
Overload된 생성자끼리는 서로 호출이 가능하다.
호출 방법
this(); 이용
메소드명은 같고 인수형이 다르거나 개수가 다른것이기 때문에
Test();
Test (String a);
Test (int a);
세개의 overload된 생성자가 있을 경우,
Test();를 호출하는 방식은, this();
Test(String a);를 호출하는 방식은, this("코난");
Test(int a);를 호출하는 방식은, this(25);
이렇게 각자 맞는 인수형의 데이터를 this에 넣어 호출하면 된다.
private String name;
private int age;
public Constructor01(){ // void를 쓰면 생성자가 아니다.
System.out.println("기본 생성자");
System.out.println("this = " + this);
}
public Constructor01(String name) {
this(); // 1번생성자 // Overload된 생성자를 호출, 반드시 첫번째 줄에 싸야된다
System.out.println("Constructor01(String name)");
this.name = name;
}
public Constructor01(int age) {
this("코난"); //2번 생성자
System.out.println("Constructor01(int age)");
this.age = age;
}
this와 this()
this는 자신의 클래스의 참조값을 갖고 있고 생략이 가능하다.
this()는 Overload된 다른 생성자를 호출할 수 있다.
단, this()는 생성자의 첫 줄에 써야한다.
varargs(Variable Argument)
varargs로 통일된 인수의 자료형에 인수의 개수를 자유롭게 구현할 수 있다.
varargs는 내부적으로 배열화 작업을 처리해준다.
예를 들어,
인수(10,20)을 받아 숫자들의 합을 구하는 메소드 하나.
인수(10,20,30)을 받아 숫자들의 합을 구하는 메소드 하나.
인수(10,20,30,40)을 받아 숫자들의 합을 구하는 메소드 하나
이렇게 총 3개의 메소드를 사용하고 싶을 때
통일된 인수이며 인수의 개수만 변화되기 때문에
int... ar으로 int형의 인수의 개수를 나의 마음대로 넣을 수 있다.
ar은 배열명으로 내부적으로 배열로 인식 되기 때문에 따로 배열 선언을 하지 않아도 된다.
public int sum(int... ar) { //... 개수를 너의 마음대로 넣어라
int hap = 0;
for(int i=0; i<ar.length; i++) {
hap+=ar[i];
}
return hap;
}
main에서는
VarArgs va = new VarArgs();
vs.sum(10,20);
으로 호출하고 데이터를 보내고 또 값을 가져온다.
public static void main(String[] args) {
VarArgs va = new VarArgs();
System.out.println("10 + 20 = "+ va.sum(10, 20));
System.out.println("10 + 20 + 30 = "+ va.sum(10, 20, 30));
System.out.println("10 + 20 + 30 + 40 = "+ va.sum(10, 20, 30, 40));
}
}
'백엔드 > Java' 카테고리의 다른 글
Java, 오늘 날짜와 시간 출력 / Date / SimpleDateFormat / Calendar (0) | 2024.07.17 |
---|---|
Java, 추상 클래스 NumberFormat 이용하기 / DecimalFormat / getCurrencyInstance( 나라별로 숫자(돈) 표현 ) (0) | 2024.07.17 |
Java, 추상 클래스(abstract method) (0) | 2024.07.16 |
Java, Override의 정의 / Overload와 차이 / Annotation / 다형성이란 (0) | 2024.07.16 |
Java, 상속(inheritance) / error 고치기 (0) | 2024.07.15 |