Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ControllerTest
- 자바의 종류
- 제임스고슬링
- 프로젝트 패키지 구조
- 테스트 성능 개선
- 상수와 Enum
- ServiceTest
- 자판기미션
- 백준
- Getter Setter
- JXM
- 우아한테크코스
- There isn't anything to compare.
- 자바 4334
- 인수테스트
- java 1000번 A+B
- 상근날드
- 블랙잭 회고
- PR 오류
- JDK
- 방어적 복사
- 우테코
- 객체지향적인 설계
- 우테코4기
- 윤년계산하기
- 자바 버전 다운 그레이드
- 리스코프치환원칙
- throw 와 throws 차이
- 자바로 만들수 있는 것
- Oracle JDK와 OpenJDK의 차이
Archives
- Today
- Total
개발새발
private 생성자를 선언하는 목적이 뭘까? 본문
사용하는 메서드 내부 동작을 살펴보다가 private로 선언된 생성자를 발견했다.
private로 선언하면 인스턴스 생성을 못하지 않나?? 왜 그렇게 했을까 궁금해졌다.
생성자(Constructor)
객체를 생성할 때 항상 실행되는 것으로, 객체를 초기화해주기 위해 맨 처음 실행되는 메소드이다.
private
private는 동일 package, 다른 package 모두 접근이 불가능하고 같은 Class 내에서만 접근을 허용하는 제한자이다.
private 생성자가 있는 클래스의 모든 메서드는 static이다?
다시 돌아오자 객체는 생성하지 않는데, 모든 메서드는 전역에서 접근이 가능하다.. 쓰읍 뭔가 싱글톤에 냄새가 난다.
맨처음 빌드가 되면 모든 클래스가 메모리할당이 되고, 그 상태에서 클래스 내에 메서드를 공유하게 된다면
필요할 때마다 객체를 생성하는게 아니라, 이미 메모리에 할당되어있는 기존 인스턴스 사용이 가능하다.!! (훨씬 효율적이네?)
그래서 명시적으로 이는 해당 클래스의 인스턴스 생성이 무의미함 을 나타내기 위해 private 생성자 를 사용한거였구나..
특징
인스턴스가 없기 때문에 Getter/Setter 사용이 불가능하다.
느낀점
코드로 의도를 표현한다는게 이런거구나 느낄 수 있었고, 당장 미션을 구현하면서 상수들을 모아놓은 클래스를 만들었는데,
여기에 적용하면 좋겠다. 아는만큼 보이는구나.. 다시 리팩토링!
참조
'java' 카테고리의 다른 글
HashSet, TreeSet, LinkedHashSet (0) | 2022.02.20 |
---|---|
final 과 static final 의 차이? (0) | 2022.02.20 |
자바란 Write Once, Run Everywhere. (0) | 2020.12.20 |
자바 개발 환경 설치하기2(이클립스 설치하기) (0) | 2020.03.11 |
자바 개발 환경 설치하기1(JRE와 JDK의 차이점) (0) | 2020.03.11 |