강의

멘토링

커뮤니티

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

김진호님의 프로필 이미지
김진호

작성한 질문수

옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트

2분 컷! 다시 한번 정리해보죠!

DI 제가 이해한게 맞는지 궁금해요

작성

·

23

0

강의에선 되게 단순하게 큰 틀 위주로 알려주시는 것 같아서 개인적으로 더 자세한 의미나 추가적인 개념이 궁금할 때 검색해보는 편인데, DI라는 것이 클래스 간의 결합도를 낮추고 객체의 유연성을 높이기 위해 빈 객체를 만들어 주입하는 것을 의미한다고 정리했습니다. 이게 맞게 정리한건지 궁금합니다. 또 추상 클래스와 인터페이스 간의 차이점은 찾아봐도 이해가 어렵길래 선생님의 친절한 설명이 필요할 것 같아서 추가로 여쭤봅니다!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 김진호님, 질문해주셔서 감사합니다!

우선, DI(Dependency Injection)에 대한 이해를 체크해보겠습니다. 김진호님께서 말씀하신 대로 DI는 클래스 간의 결합도를 낮추고 객체의 유연성을 높이는 기법입니다. 구체적으로는 객체가 직접 다른 객체를 생성하는 대신 외부에서 생성된 객체를 주입받음으로써, 클래스 간의 의존성을 줄이고, 코드의 재사용성과 테스트 용이성을 확보할 수 있습니다. 이렇게 DI를 통해 객체와 객체 간의 결합도를 낮추면, 시스템은 더 유연하고 확장 가능하게 됩니다.

추상 클래스와 인터페이스의 차이점에 대해 간단히 설명드리면:

  1. 추상 클래스:

    • 공통적인 속성이나 메서드를 구현할 때 사용하며, 일부 메서드는 구현이 없이 추상 메서드로 정의됩니다.
    • 여러 개의 클래스를 상속받을 수 없지만, 상속받으면서 기본적인 구현을 제공할 수 있습니다.
    • 상태를 가질 수 있는 필드가 존재할 수 있습니다.
  2. 인터페이스:

    • 구현 없이 메서드의 시그니처만 정의하여 구현체가 반드시 구현해야 할 메서드를 명시합니다.
    • 다중 상속이 가능합니다. 이는 한 클래스가 여러 인터페이스를 구현할 수 있다는 뜻입니다.
    • 필드를 가질 수 없으며, 상수만 선언할 수 있습니다.

추가적인 이해를 돕기 위해 Spring DI에 대한 문서자바 인터페이스와 추상 클래스에 대한 문서를 참고하시면 도움이 될 것입니다.

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

김진호님의 프로필 이미지
김진호
질문자

설명 감사합니다!!

김진호님의 프로필 이미지
김진호

작성한 질문수

질문하기