| English | 의미 |
|---|---|
| constructor/kənˈstrʌktə/ | 생성자 |
| instantiation/ˌɪnstænʃɪˈeɪʃn/ | 인스턴스화 |
새로운 객체 만들기
- 객체를 생성하려면
new키워드와 생성자를 사용하십시오. Scanner sc = new Scanner(System.in);은 새 Scanner 객체를 만듭니다.- 인스턴싱은 클래스에서 객체를 만드는 행위입니다.
- 생성자는 객체의 시작 상태를 설정합니다.
생성자 인자
- 생성자는 새로운 객체를 구성하기 위해 인자를 받을 수 있습니다.
new Random(42)은 무작위 생성기를 초기화하고,new String("hi")은 텍스트를 복사합니다.- 인자는 생성자의 매개변수와 위치와 유형에 따라 일치합니다.
- 서로 다른 생성자(오버로드)를 사용하면 같은 클래스를 다른 방식으로 만들 수 있습니다.
참조 저장
new은 객체에 대한 참조를 반환하므로, 적절한 유형의 변수에 저장하십시오.Scanner sc = new Scanner(System.in);—sc은 이제 해당 객체를 가리킵니다.- 객체는 메모리에 존재하고,
sc은 그것을 가리키는 레이블일 뿐입니다. - 참조를 잃으면(변수가 그것을 유지하지 않는다면) 객체는 접근 불가능해집니다.
두 변수, 하나 객체
- 한 객체 변수를 다른 변수에 할당하면 객체가 아닌 참조만 복사됩니다.
Scanner sc2 = sc;— 이제sc과sc2은 같은 Scanner를 가리킵니다.sc2을 통한 변경 사항은sc을 통해서도 보일 수 있습니다 — 이는 하나의 객체이기 때문입니다.- 이 참조 복사 행동은 객체의 특징이자 함정입니다.
new은 ONE(하나)의 객체를 생성하고 그에 대한 참조를 반환합니다. 이 변수를 다른 변수(b = a;)에 할당하면 참조가 복사되므로 두 이름은 같은 객체를 가리킵니다 — 즉, 두 번째 복사본이 아닙니다. 기본형(int y = x;은 값을 복사함)과 대비됩니다. 이를 잊으면 "b를 변경했는데 왜 a도 바뀌었지?"라는 놀람을 겪게 됩니다.
인스턴스화와 대명사:
Random r = new Random();→r은 새로운 Random 객체를 가리킵니다.Random r2 = r;→r2은 같은 객체를 가리킵니다 (새로운 객체가 생성되지 않음).- 이제
r과r2은 하나의 생성기의 상태를 공유합니다.
**new**을 사용하여 **생성자(constructor)**와 함께 객체를 생성하는 것(인스턴스화): new Scanner(System.in). new은 변수에 저장할 참조를 반환합니다. 한 객체 변수를 다른 변수에 할당하면 참조가 복사되어 이후에는 두 변수가 같은 객체를 가리킵니다 (기본형은 값을 복사하므로 다릅니다).
new는 하나의 오브젝트를 만듭니다; =는 참조를 복사함
r과 r2는 하나의 오브젝트를 공유하며, x와 y는 독립적인 복사본입니다.
새로운 오브젝트를 생성하는 키워드는 무엇인가?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
new와 constructor를 사용하여 오브젝트를 인스턴스화함.
새로운 오브젝트를 만들기 위해 호출되는 특별한 메서드를 ___라고 한다(단어 하나).
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
constructor는 새로운 오브젝트를 설정함.
Random r2 = r; 문장 실행 후 Random 오브젝트가 몇 개 있는가?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
할당은 오브젝트가 아닌 참조를 복사하므로, 여전히 하나의 오브젝트임.
한 오브젝트 변수를 다른 오브젝트 변수에 할당하면(b = a), 독립적인 두 번째 오브젝트가 생성됨.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
참조를 복사하므로, 두 변수는 같은 오브젝트를 가리킴.
원시 데이터(primitive)의 경우, int y = x;는 값을 복사하므로 x와 y는 독립적임.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
원시 데이터는 값을 복사하고, 오브젝트는 참조를 복사함.