강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

객체를 만들기(생성하기) 전 및 후, new 위치 질문

해결된 질문

작성

·

80

·

수정됨

0

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


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

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

[질문 내용]
안녕 하세요. 궁금증이 생겨서 질문을 올립니다.

코드를 보여주고 설명 하는게 편할것 같아서 코드를 먼저 보여드립니다.

image.png

블록친 부분을 보시면

왼쪽에 있는 것은, 생성자 쪽에서 new @@@을 해서, 값을 지정하는 방면,

오른쪽에 있는 것은, 필드 쪽에서 new @@@ 하여서 값을 지정 하는 것을 볼 수 있었습니다.

여기서 궁금증이 생깁니다.

왼쪽에 있는 pathMap을 가지고 있는 것을 객체를 생성할때 하는게 아니면 그냥 필드에 넣어도 되는것이 아닌가?

그리고 오른쪽에 있는 것을 생성자 안에 넣어서 선언해도 되는 것이 아닌가? 라는 생각들입니다

image.png

억지 스러운거 같지만 이렇게요.

그래서 여기서 궁금증인 어떤 클래스들은 필드에 new를, 어떤 클래스들은 객체에 new를 하는것 같은데,

1. 두 가지의 차이점이 궁금하고, 2.아래의 사진 처럼 이렇게 바꿔도 되는지 궁금합니다.

 

답변 부탁 드립니다.

답변 1

0

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

생각하는자님께서 객체 생성과 관련된 질문을 주셨군요. 객체를 new로 생성하는 위치나 방법에 따라 코드의 구조와 동작이 달라질 수 있어 흥미로운 주제입니다.

  1. 필드에서 객체를 생성(new)하는 것과 생성자에서 객체를 생성(new)하는 것의 차이점

    • 필드 초기화: 필드에서 객체를 생성하는 경우, 클래스 인스턴스화와 동시에 해당 객체가 생성됩니다. 이는 클래스의 모든 인스턴스가 같은 초기값으로 시작해야 할 때 유용합니다.

    • 생성자 초기화: 생성자에서 객체를 생성하는 방법은 인스턴스를 생성할 때 다양한 초기화 로직을 수행할 수 있게 합니다. 매개변수를 통해 인스턴스별로 다른 초기화를 할 수 있거나, 조건에 따라 초기화 로직이 달라질 수 있습니다.

  2. 방식을 변경해도 될지에 대한 고려사항

    • 두 방법 모두 유효하지만, 선택은 주로 설계의 의도와 코드의 명확성을 기준으로 합니다. 필드 초기화는 간단한 경우에 유리하지만, 복잡한 초기화 로직이 필요한 경우 생성자 초기화를 사용합니다.

    • 생성자 사용 시 장점은 클래스의 다양한 상태를 표현할 수 있다는 점입니다. 이를 통해 유연한 설계를 할 수 있습니다.

사진과 코드에 대한 구체적인 사항은 제공된 이미지를 통해 설명이 제한적일 수 있어, 직접적인 확인은 어려울 수 있습니다. 다만, 위의 내용을 바탕으로 코드를 재구성하고 테스트하면서 차이를 확인해 보는 것을 추천드립니다.

유사한 내용의 질문이 있을 경우, 유사한 객체 초기화 방식에 대한 질문가변적 초기화를 위한 생성자 활용와 같은 게시물을 참조할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

생각하는자님의 프로필 이미지
생각하는자

작성한 질문수

질문하기