불로구
18강. (JAVA) 자바 - 생성자 본문
생성자란?
- New 연산자로 호출되는 중괄호{} 블록
- New 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다.
- 내부에서 선언을 생략하면 기본 생성자가 자동으로 추가된다.
객체 초기화
- 필드를 초기화하거나 메서드를 호출해서 객체를 사용할 준비를 말한다.
- new 연산자에 의해 생성자가 성공적으로 실행 시, JVM의 힙 영역에서 객체가 생성되고 번지가 리턴된다
- 리턴된 객체의 번지는 클래스 변수에 저장
이해가 쉽도록 간단한 코드를 적어보았습니다.
this에 대해서는 나중에 포스팅하겠습니다.
기본 생성자
- 모든 클래스는 생성자가 반드시 존재한다. 생성자는 여러 개를 가질 수 있다.
- 즉, 생성자는 오버 로딩이 가능하다
Tv 클래스에서 생성자를 오버 로딩한 것이다.
매개변수의 타입, 개수, 순서를 다르게 선언하면 된다.
실습
import java.util.Arrays;
class Tv{
String brand;
String color;
int price;
Tv() {
}
Tv(String brand){
this.brand = brand;
}
Tv(String brand,String color){
this(brand,color,300000);
}
Tv(String brand, String color, int price){
this.brand = brand;
this.color = color;
this.price = price;
}
public String toString(){
return "브랜드 : " + this.brand + ", 색상 : " + this.color + ", 가격 : " + this.price;
}
}
public class Test {
public static void main(String[] args) {
Tv t1 = new Tv();
System.out.println(t1);
Tv t2 = new Tv("LG");
System.out.println(t2);
Tv t3 = new Tv("삼성","블랙");
System.out.println(t3);
Tv t4 = new Tv("LG","레드",200000);
System.out.println(t4);
}
}
t1의 경우 기본 생성자에 아무런 행동이 없기에 인스턴스 변수들의 값이 타입의 초깃값으로 초기화된다
출력 : null null 0 이 출력된다
t2의 경우 생성자를 오버 로딩을 하여 brand 값을 main 클래스로부터 받아("LG") 인스턴스 변수 brand를 초기화된다
출력 : LG null 0 이 출력된다 (brand는 받은 값으로 초기화됨)
t3의 경우 생성자를 오버 로딩 하여 brand와 color 값을 main 클래스로부터 받아
("삼성","블랙") this를 통해 매개변수가 3개인 생성자로 brand, color를 보내주면서 price의 값을 30000으로 설정하여 보내준다.
결국 초기화는 매개변수가 3개인 Tv 생성자가 필드를 초기화하는 것
출력 : 삼성 블랙 300000
t4의 경우 생성자를 오버 로딩하여 필드의 모든 값을 받아 this를 통해 초기화한다
출력 : LG 레드 200000
혹시나 궁금한 점은 댓글로 남겨주세요!
'프로그래밍 > JAVA' 카테고리의 다른 글
20강. (JAVA) 자바 - 필드 (0) | 2020.06.14 |
---|---|
19강. (JAVA) 자바 - 다른 생성자 호출 : this() (0) | 2020.06.14 |
17강. (JAVA) 자바 - 객체 지향 프로그래밍 (0) | 2020.06.14 |
16강. (JAVA) 자바 - 배열 복사(arraycopy) (0) | 2020.06.14 |
15강. (JAVA) 자바 - 다차원 배열 (0) | 2020.06.14 |