생성자 메소드 private

Kyu·2021년 1월 15일
0

Java 공부기록

목록 보기
9/40

생성자 메소드에 프라이빗이 들어가면?
생성자 메소드가 private인 경우도 있다.
객체를 생성할 때 관여하는 것이 생성자 메소드이다.
그런데 만약에 생성자 메소드가 private이라면?
그럼 객체를 불러올수가 없다.
그래서 클래스를 통해서만 메소드를 불러올수있다.
예를들어서 System 이나 Math 클래스를
System sys = new System(); Math math = new Math();
이런식으로 불러올수없는것도 같은 맥락이다.
IDE에서 Math를 치고 .을 치면 사용할 수 있는 메소드가 모두 static인 걸 확인할 수 있다.

아래 이미지참고

이렇게 원래 있던 API 말고
자기가 직접 메소드를 생성할때는 모든 메소드가 static이면
객체를 생성할 수 없도록 생성자 메소드 앞에 private을 붙여줘야한다.

질문: 근데 애초에 왜 이런 클래스가 필요하지?

Kyu Today at 8:23 PM
자문자답:
생성자 메소드에 프라이빗이 들어가면?

public class Kyu() {
	private Kyu(){
	}
}

Kyu 1 hour ago
생성자 메소드가 private인 경우도 있다.
객체를 생성할 때 관여하는 것이 생성자 메소드이다.
그런데 만약에 생성자 메소드가 private이라면?
그럼 객체를 new해서 불러올수가 없다.
그래서 클래스를 통해서만 메소드를 불러올수있다.
예를들어서 System 이나 Math 클래스를
System sys = new System(); Math math = new Math();
이런식으로 불러올수없는것도 같은 맥락이다.
IDE에서 Math를 치고 .을 치면 사용할 수 있는 메소드가 모두 static인 걸 확인할 수 있다.
이렇게 원래 있던 API 말고
자기가 직접 메소드를 생성할때는 모든 메소드가 static이면
객체를 생성할 수 없도록 생성자 메소드 앞에 private을 붙여줘야한다.
질문: 근데 애초에 왜 이런 클래스가 필요하지? (edited)

Shion 30 minutes ago
Math나 System클래스 같은 경우는 객체에 따라서 기능이 달라지는게 아니라 동일한 기능 사용되므로 매번 객체를 생성하기보다 재사용하는 편이 더 나아서 private 생성자로 만든게 아닐까요?

Kyu 27 minutes ago
그렇군요! 클래스 자체로 접근하는게 메모리에 이미 얹어져있는 것을 쓰는거니까 그런것이죠? 객체 생성해봤자 어차피 똑같은 기능을 쓰는 것이고..?

Shion 22 minutes ago
넵! 그런 것 같습니다 ㅋㅋㅋ

To-do

Pyro(고정완) 4 hours ago
생성자 메소드에게 private 을 한 클래스는 보통 다음 2개의 용도로 쓰입니다.
싱글톤 디자인패턴
유틸 클래스
위의 2가지 키워드로 공부해 보시고 정리해 두시면 유용할거에요 ㅎㅎ

profile
TIL 남기는 공간입니다

0개의 댓글