• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

생성 메서드 질문! Static을 왜 붙이는건가요?

24.03.26 19:05 작성 조회수 138

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
생성메서드의 용도가 갑자기 까먹었는데

그냥 생성자로 넣어주려는걸로 아는데

Static으로 정적으로 왜쓰는건가요?

Static 빼면 안되나요?

답변 2

·

답변을 작성해보세요.

0

y2gcoder님의 프로필

y2gcoder

2024.03.27

안녕하세요. 캐내기님, 공식 서포터즈 y2gcoder입니다. 

AI 답변을 참고해주시고, 추가로 궁금한 사항은 제 댓글의 답글 혹은 질문을 새로 남겨주세요 🙂

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.26

안녕하세요, 인프런 AI 인턴입니다.

질문하신 static 키워드를 사용하여 생성 메서드를 정의하는 관행과 관련된 정보를 제공하겠습니다.

객체를 생성하는 방법 중 하나로 생성자(Constructor) 대신 static 메서드, 즉 정적 팩토리 메서드를 사용하는 방식이 있습니다. 이 방식은 주로 다음과 같은 경우에 활용됩니다:

  • 생성자만을 사용할 때보다 더 명확한 이름을 제공할 수 있습니다. 예를 들어, valueOf, of, getInstance, newInstance, getType 등의 명명 규칙을 사용하여 메서드 의도를 더 명확하게 표현할 수 있습니다.
  • 호출될 때마다 새로운 객체를 생성하지 않아도 됩니다. 즉, 불필요한 객체 생성을 피하고 메모리 사용을 최적화할 수 있으며, 필요한 경우 미리 생성된 인스턴스를 반환할 수 있습니다.
  • 반환 타입의 하위 타입 객체를 반환할 수 있습니다. 이를 통해 구현 클래스를 숨기는 캡슐화를 달성할 수 있어 API를 더 간결하게 유지할 수 있습니다.
  • 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있습니다. 이는 유연성을 제공하며 디자인 패턴 중 Factory Pattern의 적용 사례 중 하나입니다.

다만, static 메서드로 정의된 팩토리 메소드를 사용할 경우 생성자와 달리 상속이 불가능하다는 점에 유의해야 합니다.

static을 빼고 일반 메서드로 변경할 경우, 해당 메서드를 사용하기 위해서는 먼저 객체의 인스턴스를 생성해야 하므로, 해당 클래스의 다른 static 메서드들이나 생성자에서는 사용할 수 없게 됩니다. 따라서, 클래스의 인스턴스 없이 호출 가능하게 하려면 static을 사용하여 정적 메서드로 선언해야 합니다.

“this, static” 질문 글에서 자세한 설명을 확인하실 수 있습니다. 이 글은 static과 생성 메서드에 대해 자세히 다루고 있으며 질문하신 내용에 대한 해설을 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.