묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결객체 지향 프로그래밍 입문
강의 수준 질문드려요
완강하긴 했는데 이해를 50% 정도 밖에 못한 것 같아요.자바의 정석 한번 다 보고, 스프링이랑 스프링부트 이제 막 공부하는 시점인데, 제가 부족한 건지 아직은 이 강의가 어렵네요.어느정도 공부한 시점에서 수강하는게 좋을까요?
-
미해결김영한의 실전 자바 - 중급 1편
instanceof 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요! 질문이 있어서 글 남깁니다.자바 기본편에서는 만약에 parent instanceof Child 라고 하면 Child child = new Parent() 이기 때문에 자식은 부모를 담을 수 없어 컴파일 오류가 발생했는데, 5분 06초 부분에서는 왜 obj instanceof Dog 는 dog.sound가 가능한 건가요?
-
해결됨김영한의 실전 자바 - 기본편
오타있어요.
caw -> cow로 바꿔야할 것 같습니다. 교재랑 예제 파일 다 caw로 되어있어요.
-
해결됨C개발자를 위한 최소한의 C++
차이점을 잘 모르겠습니다.
주신 프로그램 중 constructSelect.cpp 에서 디폴트 생성자를 지우면 에러가 발생하는데 virtualFunction 에서는 디폴트 생성자가 없어도 동작합니다. constructSelect.cpp 에서 선언 방식이 아닌 new 연산자를 사용해서 해봐도 에러가 발생하고객체 내에 멤버메서드가 없어서 그런가 해서 멤버를 만들어도 에러가 발생합니다VirtualFunction 내의 소멸자의 virtual 을 제거해도 이건 잘 작동합니다.눈으로 봐서는 도저히 차이점을 모르겠습니다.
-
해결됨C개발자를 위한 최소한의 C++
이동생성자 관련
안녕하세요. 선생님 이동 생성자 강의 내용 중 질문이 있습니다. (아래 코드 참고) delete pnData를 하면, 포인터 변수가 해제되어pnData = rhs.pnData;를 실행할 수 없는 것이 아닌지 궁금합니다. 실재로는 포인터 값은 그대로고, 가리키는 값(int 0)만 삭제되는 것인가요? 포인터 값은 놔두고 가리키는 값만 없애는 문법은 어떻게 되나요? delete를 안하고, pnData = nullptr; 로만 수정해도 됬을 것 같습니다. class TestData { public: TestData(){ pnData = new int(0); } ... TestData(TestData&& rhs) noexcept{ delete pnData; pnData = rhs.pnData; rhs.pnData = nullptr; } ... TestData& operator=(TestData&& rhs) noexcept{ delete pnData; pnData = rhs.pnData; rhs.pnData = nullptr; } }
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션 7. 문제와 풀이 4 마지막 문제
상품 구매와 총 결제 금액 나타내는 마지막 문제를 switch로 풀어봤는데 프로그램 종료가 되지 않습니다.뭐가 문제인지 봐주실 수 있나요?case 1~2, 4에서 break; 를 거는 게 맞는 건가요?ㅠ 사실 break;를 걸어도 계속해서 돌아가요ㅠㅠif문으로 풀었을 때는 break;를 만나면 제대로 나가지는데 swtich는 왜 이런 건가요ㅠㅠpublic static void main(String[] args) { Scanner scanner = new Scanner(System.in); int totalCost = 0; while (true) { System.out.println("1 : 상품 입력, 2 : 결제, 3 : 프로그램 종료"); int option = scanner.nextInt(); switch (option) { case 1 : scanner.nextLine(); System.out.print("상품명 : "); String name = scanner.nextLine(); System.out.print("가격 : "); int price = scanner.nextInt(); System.out.print("수량 : "); int quantity = scanner.nextInt(); int cost = price * quantity; totalCost += cost; System.out.println("상품명 : " + name + " 가격 : " + price + " 수량 : " + quantity + " 합계 : " + cost); continue; case 2 : System.out.println("총 비용 : " + totalCost); totalCost = 0; continue; case 3 : System.out.println("프로그램을 종료합니다."); break; default : System.out.println("올바른 옵션을 선택해주세요."); continue; } } }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
for문 중첩(피라미드 *)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.<반복문 문제풀이2 7분 29초>j <= i 부분이 이해가 안됩니다.i가 i++로 증감이 되지만 j도 마찬가지로 j++로 증감되어서 i가 1일 때 j도 1i가 2일 때 j도 2i가 3일 때 j도 3 인 거 아닌가요??
-
해결됨김영한의 실전 자바 - 기본편
알고 있던 내용과 달라서 조금 혼동됩니다.
안녕하세요 영한님. 자바를 복습하고 있는 학생입니다. 이번 파트 정말 이해가 잘 되게 설명해주셔서 내용을 이해하는데는 어려움이 없었는데 기존에 알고 있던 지식때문인지 혼동되는 부분이 있어 질문드립니다. 기존에 알고 있는 지식은 자식 인스턴스 생성시 '부모의 필드 값과 가상 메서드 테이블 등의 메타 정보를 포함하는 하나의 인스턴스 생성'이었습니다. 그런데 이번 강의 내용에선 '외부에서 볼때는 하나의 인스턴스를 생성하는 것 같지만 내부에서는 부모와 자식 모두 생성되고 공간도 구분'이라고 하셨습니다. 그렇다면 이 문장을 '부모부터 자식 클래스까지의 모든 인스턴스를 생성'이라고 봐야하나요? 아니면 '부모부터 자식까지의 모든 메타 정보를 포함하는 하나의 인스턴스를 생성'이라고 봐야하나요? 뒤에서 배울 super()를 통해 자식 인스턴스 생성시 부모 생성자를 필수로 호출하므로 '모든 인스턴스'를 생성하는 것도 말이 될 거 같지만 만약 모든 인스턴스를 메모리에 생성한다면 메모리가 비효율적으로 사용되는 것도 같아 이 부분이 좀 헷갈립니다.
-
미해결김영한의 실전 자바 - 중급 1편
Period, Duration
안녕하세요 강의 듣던중 궁금한게 생겼는데Period, Duration을 사용하지 않고LocalDateTime으로만 대체 가능한거 아닌가요 ?? 특별히 Period, Duration 객체를 사용하는 이유가 있을까요 ? 대체가 가능하다면용도가 달라서 만든 객체라고 생각하면 될까요 ??
-
미해결스프링 핵심 원리 - 기본편
setter 주입 시의 생성자
클래스에 생성자가 단 1개 존재하는 경우 @Autowired를 생략할 수 있다고 하셨는데, 이는 생성자 주입을 하는 경우에만 해당하는걸까요? setter 주입을 하기 위해 OrderServiceImpl에 setter를 정의하고 각 setter에 @Autowired를 붙였다면, 이때는 생성자 주입이 아닌 setter 주입이 이뤄지는 걸까요? 제가 추가적으로 OrderServiceImpl의 생성자에 출력문을 두었더니 memberRepository에 스프링 컨테이너에 존재하는 MemoryMemberRepository 객체의 주소값이 들어왔습니다... 생성자 주입도 이뤄지고 setter 주입도 이뤄지는 건가요...?public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { System.out.println("OrderServiceImpl.OrderServiceImpl"); System.out.println("memberRepository = " + memberRepository); this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; }
-
미해결스프링 핵심 원리 - 기본편
수동 빈 등록 vs 수동 빈 등록
수동 빈 등록 vs 수동 빈 등록에 대해 다루시지 않았다는 점이 궁금해서 질문드립니다. 제가 생각한 이유는 다음과 같은데, 실무 경험이 없어서 오류가 있을 것 같은데 오류 알려주시면 감사하겠습니다. 보통 애플리케이션의 설정 클래스는 1개 만들고, 이 클래스 내에서 여러 메서드(빈 등록 메서드)를 정의합니다. 중복되는 이름을 가진 메서드(= 빈의 이름이 중복됨)를 정의하면 자바 언어 차원에서 메서드 중복 정의되었다고 컴파일 오류로 알려주기 때문에 빈 이름(= 메서드 이름)을 중복 정의할 일이 없기 때문입니다.그런데, 생각해보면 @Bean도 name 옵션을 통해 빈 이름을 변경할 수 있고, 그렇다면 수동 빈 등록 시에도 빈 이름 중복 문제가 발생하는데 수동 빈 등록 vs 수동 빈 등록에 대해 다루시지 않는 이유가 무엇인가요? 혹시 자동 빈 등록보다 수동 빈 등록을 사용할 일이 적어서 그러한 것인가요?
-
해결됨김영한의 실전 자바 - 기본편
다형성 문제 풀이2번 - 한번 봐주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 저한테는 아직도 짜증이 나고 신경질 나게 하는, 다형성 문제 풀이 2번을 드디어 풀었는데.. 역시 코드 가 좋은 코드인지 안 좋은 코드인지 확인을 받고 싶은게 사람의 심리인가 봅니다. 혹 여기서 개선 할점 이나 나쁜게 보인다면 지적해 주시기 바랍니다.답변 부탁 드립니다.(해답 풀이는 안보고 Car를 좀 참고하기는 했습니다., 그리고 고수 분들에게는 꾸질수도 있으니 좀 양해 바랍니다.)-추가 그리고 80퍼 이해하면 프로그랭밍 적성이 맞는다고 하였는데 영한님 관점에서 80%입니까? 아니면 저희들이 이해하고 있는 관점에서 80%인가요...??
-
해결됨스프링 핵심 원리 - 기본편
프로토타입 빈과 스프링 컨테이너
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 프로토타입 빈 관련 궁금한 게 있습니다!프로토타입 빈 같은 경우 스프링 컨테이너가 프로토타입 빈 요청을 받으면 생성하고반환만 하지 관리를 하는 게 아니기 때문에 @PostConstruct 애노테이션이 붙은 초기화 메서드는 동작을 하지만 @PreDestroy 가 붙은 소멸 메서드는 동작을 안 하는 걸로 알고 있습니다.하지만 싱글톤 빈에 의존관계가 주입되어 있는 프로토타입 빈은 스프링 컨테이너가 싱글톤 빈을 관리하는 것처럼 주입된 프로토타입 빈 또한 관리를 하고 관련 요청에 대해서 인스턴스를 반환하니까 싱글톤 빈에서 사용하는 프로토타입 빈 관련 동작도 가능하다고 생각하는데 왜 컨테이너를 종료해도 프로토타입 빈의 소멸 메서드는 동작을 안 할까요?
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 자동 등록 방식에서의 @Configuration
(@Bean을 통해 스프링 빈을 수동 등록하는 방식이 아닌) 컴포넌트 스캔을 통해 자동 등록하는 방식을 사용할 때도 @Configuration이 붙은 클래스에 CGLIB가 적용되나요?컴포넌트 스캔 방식을 사용하는 AutoAppConfig 클래스 내부에는 아무런 코드도 존재하지 않고, 그렇다면 AutoAppConfig@CGLIB에서 오버라이딩할 메서드가 존재하지 않습니다. 기존에는 오버라이딩된 메서드 내에 싱글톤을 보장하는 코드가 담겨 있었는데, 이 방식은 메서드가 아닌 클래스 단위로 스프링 빈을 등록하므로 CGLIB를 적용할 필요가 없어 보입니다.
-
미해결스프링 핵심 원리 - 기본편
빈 등록과 의존관계 주입 순서
스프링 빈과 의존관계 주입의 순서에 대해 질문드리고자 합니다. @ComponentScan에 의해 스프링 빈을 등록하고, @Autowired를 통해 의존관계 자동 주입이 이뤄진다고 하셨습니다. 그런데, MemberServiceImpl 객체가 생성되기 위해서는 우선 의존관계 주입이 이뤄져야 합니다(생성자 호출). 순서를 따지자면 @Autowired에 의해 의존관계 자동 주입 -> 객체 생성 -> 스프링 빈으로 등록이라고 생각하는데요. (1) 스프링 빈 등록 (2) 의존관계 주입이라는 두 과정은 순서가 없이 섞여서 진행되는 것인지, MemoryMemberRepository와 RateDiscountPolicy와 같이 의존관계 주입이 필요없는 모든 빈을 등록하고 이후에 의존관계 주입이 필요한 클래스에 대해 의존관계 주입과 스프링 빈 등록이 섞여서 진행되는 것인지, 스프링 빈 등록과 의존관계 주입의 순서를 따지는게 큰 의미가 없는 것인지에 대해 여쭤보고자 합니다. 이전 강의에서 두 과정이 순서대로 일어난다? 섞여서 일어난다? 라는 강의를 들었던 것 같은데 이 부분이 헷갈려서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
메서드 뿐만 아니라 클래스 자체를 스프링 빈으로 등록 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 섹션 5의 "컴포넌트 스캔과 의존관계 자동 주입 시작하기" 강의 듣다가 궁금증이 생겨서 글 남깁니다.이전 강의들에서 @Configuration 이 붙은 클래스를 구성 정보로 등록하고,해당 클래스 내부의 @Bean 이라는 애너테이션이 붙은 메서드들을 스프링 빈에 등록한다고 이해했습니다. 근데, 구성 정보로서 등록할 클래스 앞에 @ComponentScan 애너테이션을 붙이고,스프링 빈으로 등록할 클래스 앞에 @Component 애너테이션을 붙이는 부분이 잘 이해가 되지 않습니다. 스프링 컨테이너에 빈으로 등록할 수 있는 건 메서드(@Bean 처럼) 뿐만 아니라,클래스 자체(@Component) 를 통째로 빈으로 등록할 수 있는건가요? 만약 클래스 자체를 통째로 빈으로 등록할 수 있다는 말씀이시라면,@Component 애너테이션이 붙은 클래스 내부에 있는 모든 메서드들과 변수들을 자동으로 빈으로 등록한다는 것이고,이것들을 .getBean() 메서드를 통해 조회할 수 있다는 것인가요?
-
해결됨김영한의 실전 자바 - 중급 1편
Class 클래스 강의 질문
class 클래스 강의에서 나온 클래스 생성 할때 쓰는 .getDeclared constructer().newInstance() 와new 키워드로 객체인스턴스 생성하는게 어떤 차이점이 있나요 ?
-
해결됨스프링 핵심 원리 - 기본편
5분대부터 말씀하신 테스트에 대한 질문
안녕하세요 영한님. 강의 너무 잘 듣고 있습니다.다름이 아니라 강의 듣다가 테스트 코드의 중요성을 말씀해주셨는데, 궁금한 점이 있어서요 단위 테스트를 작성하는 것이 좋다단위 테스트는 스프링이나 DB를 활용하는 것이 아니다이렇다면, 단위 테스트할 때는 Fake 객체를 사용해서 단위테스트를 작성해야 하는 걸까요? 인터페이스로 역할과 구현이 분리된 상태에서 MemberRepository의 구현체를 프로덕션에서 사용하는 MemoryMemberRepository, 테스트 환경에서 사용할 FakeMemberRepository로 분리해서 사용하는 걸까? 하는 궁금함이 있어 여쭈어봅니다 항상 좋은 강의 감사합니다!!
-
미해결스프링 핵심 원리 - 기본편
10분쯤 에러....
뭐가 문제일까요?? 해결하고 집에 가고 싶어요ㅠㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
다양한 의존관계 주입 방법에서 AutoAppConfigTest를 실행하면,
왜 OrderServiceImpl 가 실행되나요?? memberService가 실행되고 끝 아닌가요?