작성
·
386
1
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
강의 9분쯤 인터페이스로 만든 MemberRepository를 private fianl로 객체 생성했는데 제가 알기론 인터페이스는 객체로 생성이 안되는데 어떡게 된건가요??
캐스팅을 하면 인터페이스를 객체로 만들 수 있는건가요??
답변 1
0
안녕하세요, dbfl3742 님! 공식 서포터즈 codesweaver 입니다.
말씀하신 것처럼 인터페이스는 객체로 생성할 수 없습니다.
만약 MemberRepository를 구현한 구현체가 없는 상태로 앱을 실행한다면 문제가 생깁니다 :)
감사합니다.
네, 맞습니다.
private MemberRepository memberRepository = new MemoryMemberRepository();
처럼 받는 쪽은 인터페이스로 받을 수 있으나, 실제로 들어가는 값은 구체 클래스가 들어가야 합니다. (단! MemoryMemberRepository는 MemberRepository 인터페이스를 구현하고 있어야 합니다. 그래야 다형성 개념이 적용됩니다)
그럼 필드를 인터페이스로 만드는데 new로 클래스 객체를 넣어주면 해당 인터페이스 필드는 클래스 객체로서 사용이 가능한 건가요?