묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 기본편
이늄 클래스 혹은 레코드 메서드 상속 시 인터페이스 default 메서드 사용에 대한 질문 드리고 싶습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 강의를 듣다가 궁금한 점이 생겼습니다.인터페이스는 구현 메서드를 가능한 지양해야하므로 default 메서드는 하위 호환 등의 특별한 예외에서 사용해야한다는 말씀에 깊이 공감하고 있습니다.다만 이런 경우는 어떤 접근 방식이 좋을까요?프로젝트내 특정 이늄 클래스들 혹은 레코드들에 대해서 공통화된 메서드 처리를 하고 싶을 때 디폴트 메서드가 있는 인터페이스를 상속받아서 공통 기능을 사용하고 있습니다. 이늄과 레코드는 클래스 상속이 안되어서 생긴 편법? 같은 느낌이 드는데요. 이에 대한 정석적인 접근 방식이 있을까요? .. 또한 이늄과 레코드는 상속을 못하게한 객체지향적인? 이유가 있을 것 같은데 혹시 어떻게 이해를 하면 좋을지.. 궁금합니다..!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
3번문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]문제와 풀이 3번문제 선생님 풀이와 다르게 마지막 else 부분을 이렇게 작성했는데 이것도 정답이 될 수 있을까요? public class Ex3 { public static void main(String[] args) { int dollar = 5; if (dollar < 0) { System.out.println("잘못된 금액입니다."); } else if (dollar == 0) { System.out.println("환전할 금액이 없습니다."); } else { System.out.println("환전금액은 " + dollar*1300 + "원입니다." );
-
해결됨김영한의 실전 자바 - 기본편
println() 오류
java-basic 프로젝트를 생성했을 때 println()이 빨간색으로 되면서 실행이 안되었는데file-project structure-Modules-Dependencies에 들어가서 openjdk-21을 클릭하고 OK를 클릭하니 실행이 되는데 제가 해결한 방법이 옳은 방법인가요?
-
미해결김영한의 실전 자바 - 중급 1편
메인 함수 와 지역 클래스 간의 처리 순서 문의
해당 영상 문제처럼 LocalOuterV1 클래스 안에 localPrinter 클래스가 지역 클래스?등이 존재해도 main 함수가 아래 나오면 메인 함수로부터 프로그램이 우선으로 실행된다 생각 했는데 그거랑 상관없이 위에서 순서대로 결과가 나오나요?해당 문제의 동작 순서가 어떻게 될까요..?
-
미해결김영한의 실전 자바 - 중급 2편
혹시 고급편은 언제 나오는 지 알 수 있을까요?
스프링을 공부하다가 람다, 스트림에 대한 학습이 부족해서 막혔는데 혹시 고급 편 강의가 언제 나올 수 있을지 대략적이라도 알 수 있을까요?... 다른 시중 강의를 구매하고 볼지 아니면 김영한 님 강의를 기다릴지 고민입니다
-
해결됨김영한의 실전 자바 - 기본편
업캐스팅과 다운캐스팅
업캐스팅처럼 문제가 발생할 가능성이 없다. 즉, 안전하다 -> 코드를 생략해도 자바가 컴파일과정에서 코드를 추가해준다. 왜? 추가하더라도 안전하니까다운캐스팅처럼 문제가 발생할 가능성이 조금이라도 있다. 즉 안전하지 않다 -> 코드를 생략하면 자바가 코드를 추가해주지 않는다. 왜? 추가해서 혹시라도 문제가 발생하면 자바 책임이 되니까 -> 즉, 개발자가 직접 명시해야 한다. -> 명시하지 않으면 컴파일 오류, 명시하면 컴파일 성공 -> 컴파일 성공해서 실행중에 런타임 오류가 발생하지 않으면 괜찮지만, 런타임 오류가 발생하면 코드를 직접 명시한 개발자 책임이 된다.이 부분이 헷갈려서 정리해 봤는데, 이렇게 이해하는게 맞을까요?
-
미해결김영한의 실전 자바 - 기본편
접근제어자 쇼핑카트 문제 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이해한 내용이 맞는지 확인하고자 몇가지 질문드립니다.1) 아래 코드의 items[itemCount] = item; 는 item 인스턴스의 참조값을 items[itemCount]에 복사해서 넣어주는 것인가요? public void addItem(Item item){if(itemCount >= items.length){System.out.println("더이상 제품을 담을 수 없습니다."); return; }items[itemCount] = item; itemCount++; }2) displayItems() 메서드와 totalAmount() 메서드의 for문 안에는 모두 공통적으로 Item item = items[i]가 사용됩니다. 이 부분에 대해 질문이 있습니다. 2-1) Item item 부분을 일종의 배열 참조값 저장을 위한 임시 변수라 생각하면 될까요? 참조값을 인스턴스에 저장하는 것은 아닌지 질문드립니다.2-2) 다른 메서드의 for 문 안에서 Item item을 두 경우 다 사용할 수 있는 것이 한 메서드가 실행 종료되면 해당 변수가 사라지기 때문인가요?public void displayItems() {System.out.println("장바구니 상품 출력"); for (int i = 0; i <= items.length; i++) {Item item = items[i]; System.out.println("상품명:" + item.getName() + ", 합계:" + item.getPrice()); }System.out.println("전체 가격 합:" + totalAmount()); }private int totalAmount(){int totalPrice = 0; for (int i = 0; i <= itemCount; i++) {Item item = items[i]; totalPrice += item.getPrice(); }return totalPrice; }}
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
메서드 네이밍 관련해서 질문있습니다!
안녕하세요! 강의 너무 잘 듣고 있습니다!개발을 진행하면서 항상 네이밍 관련된 부분이 정말 어려운거 같네요ㅜㅜ추상화 레벨 파트를 수강하다가 궁금한 점이 있어서 질문드립니다! 같은 boolean형을 반환하는 메서드인데 doesUserWinTheGame()처럼 doesXxx()와, isAllCellIsOpened()처럼 isXxx() 두 가지 형태를 사용하셨는데, 주로 어떤 상황에서 does를 사용하시고, is를 사용하시는지 궁금해서 질문드립니다!
-
미해결김영한의 실전 자바 - 중급 1편
자바 고급강의
자바 고급강의는 언제나오나요?
-
미해결김영한의 실전 자바 - 기본편
접근 제어자 관련 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요, 접근제어자 관련 질문드립니다.1)AccessData와 AccessInnerMain 내용에서,외부인 AccessInnerMain에서 AccessData의 innerAccess()가 호출 될 수 있는 것은 public이기 때문입니다.내부 호출인 inneerAccess()의 내용이 표시될 수 있는 것은 innerAccess()의 필드가 private int privateField라 하여도 public이기 때문에 가능한 것인가요?또한 강의 자료 중 , innerAccess()메서드는 자신의 private 필드와 메서드에 모두 접근 할 수 있다고 되어 있는데, 여기서 private 필드와 메서드가 무엇을 의미하는 것인지 정확히 모르겠습니다. private int privateField와 privateMethod를 의미하는 것일까요? 아니면 innerAccess()메서드는 자신의 필드가 없고 지역변수가 있는 것인가요?추가적으로, 아래 코드의 경우,public void innerAccess(){System.out.println("내부 호출");publicField = 100;defaultField = 200;privateField = 300;publicMethod();defaultMethod();privateMethod();}privateField, publicField나 defaultField를 innerAccess의 지역변수라 말해야 할지, AccessData 클래스의 필드라 할지 잘 모르겠습니다.2) AccessOuterMain에서import access.a.AccessData;를 해주어도 defaultField,defaultMethod나 privateField,privateMethod가 실행이 안되는 것은 private, default 접근 제어자 그 자체의 정의에 의해서 안되는 것인가요?이 사례에서 import는 AccessData클래스와 access.a 패키지에 접근하게 해주지만, 관련 클래스 및 패키지의 필드와 메서드가 private이나 default로 되어 있는 이상 접근하지 못하는 것으로 이해하였는데, 맞는지 확인 부탁드립니다.
-
미해결스프링 핵심 원리 - 기본편
7분29초 단일책임원칙
7분29초에 말씀하신게 단일책임원칙을 지킨게 아니라개방 폐쇄 원칙을 지킨게 맞지않나요?단일책임원칙도 지킨건가요?
-
미해결김영한의 실전 자바 - 중급 1편
ex2 패키지에서 궁금한게 있는데요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.private static class NetworkMessage {...}이 정적 중첩 클래스에서 static 을 제거하면private class NetworkMessage {...}내부 클래스가 되는건가요? 근데 뒤에 강의를 보면 내부 클래스는 아닌거 같은데, 정적이 아닌 그냥 중첩 클래스인 건가요?
-
해결됨김영한의 실전 자바 - 중급 2편
3. 컬렉션 프레임워크 - ArrayList 강의 교안 오타 제보
[오타 제보 내용]3. 컬렉션 프레임워크 - ArrayList 교안 pdf직접 구현하는 배열 리스트2 - 동적 배열배열의 크기를 초과할 때(5) 이렇게 증가된 배열에 데이터를 추가하면 된다. 물론 데이터가 추가되었으므로 size 도 하나 증가시킨다.기존 배열( x001 )은 더는 참조하는 곳이 없으므로 GC의 대상이 된다.그림에서는 x100으로 나와있는데, 교안에는 기존 배열의 주소를 x001로 표시하고 있습니다.기존 배열의 주소값 확인 부탁드립니다.직접 구현하는 배열 리스트3 - 기능 추가주제 내용 맨 첫 부분에 나오는 add(Index, 데이터)와 remove(Index)의 파라미터가 Index라고 I가 대문자로 나와 있습니다.i(소문자) 확인 부탁드립니다.감사합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예)[질문 내용]안녕하세요. 저는 지금 강의를 보고 있는 비전공자 학생입니다. 다름이 아니라 강의 시간 기준 약 8분대에 println("a = " + a + ", b = " + b)라는 코드가 있습니다. 이 때 +a+가 의미하는 것이 무엇인지 또 " " 안에 ,를 넣고 b를 넣었는지에 대해 물어보고 싶습니다. 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
섹션7. 옵션처리
영상 6분 30초쯤에 TestBean을 스프링 빈으로 등록 된다고 하셨는데, 어노테이션 없이도 빈으로 등록되나요? 그리고 @Component이 추가 된거랑 같은지 궁금합니다. 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
ComponentScan시 @Configuration
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]수동으로 빈을 등록할 때 AppConfig 클래스에 붙은 @Configuration이 빈의 싱글톤을 보장한다면, 컴포넌트 스캔으로 빈을 등록할 때 AutoAppConfig에 붙은 @Configuration은 AutoApppConfig 클래스를 스캔 범위로 포함시키는 것 외에 무슨 역할을 하나요?
-
미해결김영한의 실전 자바 - 기본편
추상클래스 인스턴스 생성할 문제를 방지
안녕하세요 강사님추상 클래스 덕분에 실수로 인스턴스를 생성 할 문제를 근본적으로 방지한다고 하셨는데, 인스턴스를 생성할 근본적인 문제가 어떤 것인가요? 아직 추상 클래스를 사용하는 이유를 잘 모르겠습니다...
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
코틀린에서의 getter, setter 질문이 있습니다!
안녕하세요 우빈님! 이 강의 오픈 소식을 볼려고 6월 내내 인프런 알림을 얼마나 눌렀는지 아시나요? ㅠㅠㅋㅋㅋ 어제 오픈해주시자마자 열심히 듣는 중입니다! 좋은 강의 감사드립니다 ㅎㅎ질문 제목처럼 setter 와 관련한 질문이 있습니다. 실무에서 코틀린을 사용하신다고 하셨는데, var 로 프로퍼티를 만들게 되면 외부에서 접근해서 setter 처럼 바로 값을 변경할 수 있는게 문제가 되지 않을까 늘 고민이 많이 됐습니다.접근 제어자를 private 으로 만들어주고 해당 프로퍼티의 값을 업데이트해주는 내부 메서드를 만드는 식으로 해야되나 이런 고민도 해봤구요. 아니면 팀원들과 잘 약속해서 써야하나? 이런 고민도 해봤습니다. (물론 저는 지금 취준생이지만요 ㅎㅎ)getter 도 처음에는 자제하는게 좋다고 하셨는데, 이러면 val 도 사용을 자제해야되는 것일까요..? var, val 둘 다 되게 편하고 좋은 거 같은데 이런 걸 아예 사용 안 하는 것은 코틀린을 쓰는 의미가 크게 반감되는 거 같기도 해서, 뭔가 다른 더 좋은 방법이 있을 것 같기도 합니다.우빈님 같은 경우에는 이런 문제를 어떻게 해결하시는 지 궁금합니다!감사합니다.
-
미해결김영한의 실전 자바 - 중급 2편
문제와 풀이4 - Queue
안녕하세요 영한님 🙂 항상 감사한 마음으로 강의 잘 듣고 있습니다 ㅎㅎ별거 아닌 오탈자이긴 한데, 큐 두번째 문제에서 실행 결과 부분 오탈자가 있어서 말씀드립니다! "작업 시작" -> "==작업 시작==""작업 완료" -> "==작업 완료=="
-
미해결스프링 핵심 원리 - 기본편
다형성, OCP, DIP의 차이점
[질문 내용]다형성 : 하나의 타입으로 여러개의 객체를 다룰 수 있는 것OCP : 변경에는 닫혀있고, 확장엔 열려있는것 따라서 클라이언트 기존의 코드는 변경하지 않고 확장을 통해 기능을 추가하고 변경할 수 있다DIP : 클라이언트와 구현체는 추상화에 의존해야된다는 것 따라서 클라이언트가 구현 객체에 의존하는 것이 아닌 클라이언트와 구현객체 사이에 인터페이스를 두고 클라이언트와 구현객체가 인터페이스에 의존하여 구현객체를 변경해도 클라이언트에 영향이 없음을 의미한다전 아무리 생각해도 다형성, OCP, DIP 이 세가지가 결국엔 추상화에 의존해서 클라이언트의 코드 변경없이 기능을 확장시킨다를 의미하고 있고, 다형성, OCP, DIP 이 세가지가 말만다르지 다 똑같아 보이는데 ,,명확한 차이점이 있을까요? 그리고 예를들어 OCP를 위반해도 DIP는 지켜지는 그런 상황도 있을까요?