생성자의 조건
1. 객체가 생성되자마자 무조건 제일 먼저 실행되어야만 한다.
2. 생성될 때 단 한번만 실행되어야만 한다.
Inventory inventory = new Inventory();
inventory.init();
inventory.addInventory();
inventory.init();
- Inventory inventory = new Inventory();
- Inventory 클래스를 정의하고 new로 이 자료형을 거론하게되면 실체화된다.
- 실체화되면 이 구조가 메인 메모리에 잡혀 실존하게된다.
- 메인 메모리에 실존하는것을 inventory 라고 이름을 붙인다.
- inventory.init();
- 초기화를 해달라고하면 init()호출한다.
- inventory 참조변수 공간에는 배열객체를 만들어 넣어준다.
- current 값변수 공간엔는 0을 넣어 셋팅해준다.
- inventory.addInventory();
- addInventory() 실행
- inventory.init();
- inventory.init() 이 또 하게 된다면? 함수는 정상적으로 호출되지만 이는 초기화라기보다 수시로 사용이 가능하므로 reset기능에 가깝다.
new Inventory + ();
- new Inventory : Inventory 를 실체화한다.
- (); : 객체를 초기화하는 생성자를 호출한다.
생성자는 반환 목적으로 만들어진 것이 아니다. 무조건 객체가 있으면 그 객체를 넘겨받는 역할이다. 생성자는 함수명이 없다. 정의할 때의 함수명은 초기화 할 객체를 한정하기 위한 형식명칭이다.
적용
Inventory inventory = new Inventory();
public class Inventory {
private Product[] products;
private int current;
public Inventory() {
this.products = new Product[5];
this.current=0;
}
}
생성자의 overload
1. 기본생성자가 없이 overload생성자만 만들면 기본생성자가 사용불가능하다. 추후 상속에서도 난제를 만나게된다.
기본 생성자는 컴파일러가 컴파일할때 생성자가 하나도 없을 때만 저절로 만들어준다.
2. overload는 똑같은 기능을 인자를 다르게 해서 편의를 도모하는것을 말하기때문에 중복을 제거하기위해 기본생성자가 overload생성자를 호출한다. 생성자는 갓 태어난 객체를 통해서만 호출할 수 있기때문에 기본생성자가 인자를 가진 생성자를 호출함으로써 코드를 중복해 작성하는것을 해결할 수 있다.
적용
public Inventory() {
this(5);
}
public Inventory(int size) {
this.products = new Product[size];
this.current=0;
}
참고자료 출처(6-7) : https://www.youtube.com/watch?v=1IDuDTwka9M&list=PLq8wAnVUcTFV4ZjRbyGnw6T1tgmYDLM3P&index=59
'JAVA' 카테고리의 다른 글
UI코드 분리 하기 (0) | 2024.01.10 |
---|---|
Setter 대신 Overload 생성자 이용하기 (0) | 2024.01.09 |
Getter 와 Setter (0) | 2024.01.07 |
데이터 구조화 (0) | 2024.01.07 |
캡슐화 (0) | 2023.12.18 |