우주코딩
생성자 활용 본문
생성자 활용
생성자?
인스턴스를 생성한 후 그 인스턴스(값을 저장할 변수들의 묶음, 메서드X)를 제대로 쓸 수 있도록 유효한 값으로 초기화시키는 일을 하는 메서드 (O) 올바른 답변
자동으로 실행되는 메서드요 ( X ) 아주 올바르지 않은 답변
String 클래스로 생성자호출하여 인스턴스 초기화하기
String s1 = new String("Hello");
// Hello => String literal
// 문자열 리터럴을 사용하여 String 인스턴스를 초기화시키기.
// String(스트링 리터럴) 생성자를 호출하여 인스턴스 초기화
char[] chars = new char{'H','e','l','l','o'}
// char배열이 만들어 진 것
String s2 = new String(char)
// 문자 배열을 s2의 주소값으로 넣음.
// char[] 을 사용하여 String 인스턴스 초기화시키기.
// String(char[]) 생성자를 호출하여 인스턴스 초기화
남이 만든 클래스를 사용할 때 매뉴얼을 보고 적절한 생성자를 사용하라
% 주의 %
Calendar 클래스는 생성자가 없다.
기본 생성자가 protected 로 제한되어있다. protected형 생성자는 상속된 서브클래스만이 접근할 수 있다. 캘린더 클래스의 getInstance 메서드를 통해 인스턴스를 생성할 수 있다.
이렇게 자바에서 생성자의 사용 권한을 막고 메서드를 호출하여 객체를 생성하도록 유도하는 경우는 다음과 같다.
- 같은 값을 갖는 객체를 쓸데없이 여러 개 생성하지 못하도록 하고 싶을 때
메모리를 절약할 수 있다. => 이런 방법을 사용하는 설계 기법: Singleton - 객체 생성과정이 복잡할 때
객체 생성 코드를 단순하게 만들 수 있다.
생성된 객체를 재활용할 수 있다. => 이런 방법을 사용하는 설계 기법: Factory Method
'자바 본 강의' 카테고리의 다른 글
상속 클래스 로딩과 인스턴스 생성 과정, 생성자 호출 순서 (0) | 2021.07.28 |
---|---|
상속 문법의 존재 이유, 상속 사용 (0) | 2021.07.28 |
클래스와 생성자, 인스턴스 필드와 블록 (0) | 2021.07.27 |
의존 객체, 클래스 간의 관계, 생성자 선언, 패키지의 분류 (0) | 2021.07.26 |
스태틱 / 인스턴스 / 로컬 변수, 스태틱 / 인스턴스메서드 (0) | 2021.07.22 |
Comments