묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
DiscountPolicy discount()의 매개변수 관련 질문
public interface DiscountPolicy { /** * * @return 할인 금액 */ int discount(Member member, int price); }discount()의 매개변수 int price는 FixDiscountPolicy에서는 사용되지 않고 RateDiscountPolicy에서만 사용됩니다. 모든 구현 클래스에서 사용되지는 않는 매개변수를 인터페이스에 선언했다는 점이 잘 이해가 되지 않습니다. 모든 구현 클래스에서 사용되지 않는 매개변수를 인터페이스 level에 선언해도 괜찮은 것인지 여쭤보고 싶습니다.
-
해결됨스프링 핵심 원리 - 기본편
모든 빈 출력에서 에러가 떠요
2분 30초에 런 해보는데 에러가 나옵니다. 파일 추가하라는 것도 했고 다 했는데 에러가 떠요깃허브에 코드도 올렸는데 이것도 참고해주세요...!
-
미해결김영한의 실전 자바 - 중급 1편
[3.StringClass][str.concat] concat질문 (p.8, p.15)
[p.8 / str.concat 오류 이유 -> 불변]하기 코드의 오류가 발생한 이유는 str.concat(" java")를 한 내용을 String타입의 변수로 담아주지 않았기 때문입니다. package lang.string.immutable; public class StringImmutable1 { public static void main(String[] args) { String str = "hello"; str.concat(" java"); System.out.println("str = " + str); } } 그에 비해 반면, p.15의 concat부분이 이해가 되지 않습니다.package lang.string.method; public class StringChangeMain1 { public static void main(String[] args) { String str = "Hello, Java! Welcome to Java"; System.out.println("인덱스 7부터의 부분 문자열: " + str.substring(7)); System.out.println("인덱스 7부터 12까지의 부분 문자열: " + str.substring(7, 12)); System.out.println("문자열 결합: " + str.concat("!!!")); System.out.println("'Java'를 'World'로 대체: " + str.replace("Java", "World")); System.out.println("첫 번째 'Java'를 'World'으로 대체: " + str.replaceFirst("Java", "World")); } }상기에서 str.concat을 한것은 어떠한 String변수에도 담기지 않았습니다.그럼에도 불구하고, str과 !!!가 합쳐져서 나온것을 볼 수 있습니다. 불변의 String 객체의 내용이 변수에 담지 않았음에도 불구하고 합쳐져서 나오는 이유는 무엇인가요? 궁금합니다!!
-
미해결스프링 핵심 원리 - 기본편
Order의 할인 금액, 주문 금액 관련 질문
public class Order { private int discountPrice; // 할인금액 public int calculatePrice() { // return: 주문금액 return itemPrice - discountPrice; } }(1) 주문 금액을 필드가 아닌 메서드로 두신 이유가 정말 궁금합니다.(2) 1개의 주문에 대해서는 여러 상품이 존재할 수 있고, 하나의 상품을 여러 개 주문할 수도 있습니다. 이 예제에서는 주문 1개에 대해서, 상품 1개를 1개만 구매할 수 있다는 상황이 가정된 것인가요?
-
미해결김영한의 실전 자바 - 중급 1편
equals()
String str1 = "Hello" ;String str2 = "Hello" ; 이때에는 boolean result = str1.equals(str2) ; 를 하면 result = true; 인 이유가 무엇이고,Dog dog = new Dog("HI") ; Car car = new Car("HI") ; 이떄에는 boolean result = dog.equals(car) ; 이건 result 가 false 인 이유가 무엇인가요 ?저 위의 String 예시에서는 object classs 의 equals 메서드를 사용하는게 아닌건가요 ? 그리고 만약 Object class 의 equals 메서드를 애초에 equals() 수업에서 오버라이딩 한것처럼 만들면 되는거 아닌가요 ? ( 오버라이딩의 수고스러움을 덜기 위해)
-
미해결김영한의 실전 자바 - 중급 1편
object class
만약 object class 가 제공하는 equals() 에 대해서 어느 한 A라는 클래스가 다른 특정한 B 클래스를 extends 하면 A 클래스 내에서는 equals() 를 사용하지 못하는건가요 ?
-
해결됨김영한의 실전 자바 - 중급 1편
열거형 Grade 질문
안녕하세요 영한님 enum Grade 안에 discount 메서드를 추가하는 부분을 보면서 궁금한 부분이 생겼는데, 실제로도 이러한 등급 enum이 있을 때, 등급에 따른 배송비 무료나 사은품 증정 같은 혜택의 로직들을 enum의 내부에서 다루는 걸까요?
-
미해결김영한의 실전 자바 - 기본편
다형성 참조에 관하여 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.Parent poly = new Child();이코드가 부모에 자식을 참조 할 수 있다는건 알겠습니다. 그런데 근본적으로 코드가 해석이 명확히 안됩니다.Parent타입의 변수 poly를 선언하고 poly에 Child클래스의 객체를 생성후 그 객체의 참조값을 대입을 한건가요? 그럼 이 그림에서 Parent poly = new Child(); 이 코드를 작성시 메모리에 Parent도 생성이 되는걸로 나와있는데 Child객체만 생성된거 아닌가요? Parent도 메모리가 할당되는 이유가 궁금합니다. 그리고 자식의 기능을 호출 할 수 없다고 하셨는데 poly에 결과적으로 Child객체의 참조값이 대입된거 아닌가요? 그러면 참조값을 찾아서 메소드를 호출 할 수 있는거 아닌가요?
-
미해결김영한의 실전 자바 - 기본편
다형적참조와 메서드 오버라이딩 관련해서 질문있습니다!!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요! 강의 너무 잘보고있습니다 ㅎㅅㅎ다형적 참조에서 궁금한 점이 있어 질문 드립니다!사진처럼 Child에서 Parent 메서드를 오버라이딩 했습니다. 인스턴스는 Child로 생성했고,parent 변수에 업캐스팅 해주어 Parent type으로 변경했습니다. 근데 결과가 부모(Parent)의 parentMethod()가 실행될줄 알았는데 오버라이딩 된 자식의 메서드가 실행되었습니다..!저는 위의 그림처럼 될것이라고 생각했습니다.강의에서도 자식방향으로는 내려갈 수 없다고 하셨고,같은type인 Parent 인스턴스 부터 메서드를 찾아서부모의 parentMethod가 실행될줄알았는데어째서 밑으로 내려간 것인지 궁금합니다!! 추가로)instanceof (5:00쯤) 강의에서도자식방향으로 내려갈수 없으니 다시 다운사이징 해줘서child.childMethod()를 호출했다고 이해했습니다. 다른질문글을 찾아보긴했는데 컴파일시, 런타임시에 뭔가 다다고하셨고오버라이딩은 런타임 때에 알수있어서라는 식의 답변을 보았는데 이해가 안돼서 질문드립니다 흑흑.. 설명해주시기 너무길면 어떤 개념을 찾아보아야 하는지 알려주실수있을까요!!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션7 문제와풀이 상품구매
안녕하세요! 강의를 듣고있는데 상품구매 문제에서 강사님은 if문을 사용하셨는데 저는 switch문을 사용해서용 .. switch문 써도 된다고 하시긴 하셨는데 정확한 답이 없어서 이게 맞는지 잘 몰라서 질문드립니다!그리고 switch문보다 if문을 사용하는게 더 괜찮을까요 .. ?
-
미해결스프링 핵심 원리 - 기본편
lombok spring 3.2.x 설치 관련 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 모름3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네[질문 내용]Java 21 버전, spring boot 3.2.1 , dependency-management 1.1.4 입니다.lombok관련해서 이슈가 있어 깔리지 않는걸까요 ? 아예 에러도 안뜹니다.
-
미해결김영한의 실전 자바 - 중급 1편
instanceof
Instanceof 는 obj 가 어떠한 타입을 참조하고 있는지 알려줄 뿐만 아니라 자동으로 다운 캐스팅도 해주나요 ?아니면 if( obj instanceof Dog) 가 아니라 if (obj instanceof Dog dog) 여서 다운 캐스팅이 저 괄호 안에서 다 처리가 된건가요 ? (제가 첫번째 질문자인 것을 영광스럽게 생각합니다 ㅎㅎ...)
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
선생님 Objcet 질문 있습니다.
안녕하세요. 선생님대문자Object와 소문자objcet의 차이점에 대한 질문이 있습니다.네이티브 오브젝트가 대문자Object,호스트 오브젝트가 소문자 object인 것으로 이해 하였고Global 오브젝트는 네이티브 오브젝트에 포함되어 있다고 이해 하였습니다.섹션11 강의인 Global 오브젝트의 프로퍼티들은 전역 범위의 프로퍼티이고호스트 오브젝트에 소문자 Global objcet(window)도 전역 범위에 항상 존재하는데Global 오브젝트의 프로퍼티들이 소문자 Global objcet(window)에서 사용된다고 봐야할까요?아니면 네이티브 오브젝트의 전역 범위에서 Global 오브젝트의 프로퍼티들이사용되는 것 일까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
패키지 이동 했을 때 디버깅이 안됩니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]사진처럼 원래는 각각 패키지를 따로 만들었다가 이번에 인프런(inflearn)이라는 상위 패키지를 하나 만들고 그 아래로 다 이동시켰는데 갑자기 이렇게 뜨면서 디버깅 실행이 안되네요. 혹시 해결방안이랑 원인이 뭔지 알 수 있을까요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Scanner에서 홀수 짝수 문제 오류 질문?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Scanner에서 두 번째 문제 홀수 짝수에서 음수를 입력해도 결과가 나옵니다.혹시 오류인 것인지?아니면 package scanner; import java.util.Scanner; public class ScannerEx2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("하나의 정수를 입력하세요: "); int num = scanner.nextInt(); while (true) { if (num % 2 == 0 && num >= 0) { System.out.println("입력한 숫자 " + num + "는 짝수 입니다."); break; } else if (num % 2 == 1 && num > 0) { System.out.println("입력한 숫자 " + num + "는 홀수 입니다."); break; } else { System.out.println("0이상의 정수를 입력해주세요"); System.out.print("하나의 정수를 입력하세요: "); num = scanner.nextInt(); } } } }위와 같이 하는 것이 맞을까요? ( 음수도 홀짝이 있나요..?)
-
미해결김영한의 실전 자바 - 기본편
섹션9상속-상속과 메모리 구조 질문있습니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 강사님! 강의 너무 잘 보고 있습니다 짱...섹션9상속-상속과 메모리 구조 10분 전후 내용에서 질문이있습니다!이 페이지에서 그림에서ElectricCar 부분에 move()가 없으니Car부분으로 가서 move()를 찾잖아요!(현재 타입에서 기능을 찾지 못하면 상위 부모 타입으로 가서 찾는다!) 만약에 Car에도 뭔가 상속이있었고,Car의 부모에도 상속이있었고.. 이처럼Car위에도 상속이 이어졌을경우 그림의 Car네모칸안에 위의 부모 객체들도 여러개 생성되는 건가요??(초록 = Car의 부모 'CCar 객체'회색 = CCar1의 부모 'CCCar2객체'.. )모든 기능을 이용 가능해야 하니까저는 위의 그림처럼 되어야 한다고 이해했는데맞는지 궁금해서 질문 올립니다!! 아직 뒤의 강의를 안봐서 중복된 내용일수도 있는점 미리 사과드립니당..//
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
피라미드를 찍을 때 for을 두개만 이용해서 가능하시다고 하셨는데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]피라미드를 찍을 때 for을 두개만 이용해서 가능하시다고 하셨는데. 어떻게 해야하나요?처음에 for을 4개를 썼다가 강사님 말씀 듣고 for을 3개로 줄였는데, 도무지 2개로는 못하겠슴다...아래는 제가해본 코드입니다.package loop; public class LoopEx8 { /* public static void main(String[] args) { int rows = 9; for (int i = 1; i <= rows; i++ ) { for (int k = rows - i; k >= 1; k--) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("* "); } for (int h = 1; h <= i -1; h++) { System.out.print("* "); } System.out.println(); } } */ public static void main(String[] args) { int rows = 9; for (int i = 1; i <= rows; i++) { for (int j = rows; j >= i + 1; j--) { System.out.print(" "); } System.out.print("* "); for (int k = i; k >= 2; k--) { System.out.print("* * "); } System.out.println(); } } }
-
해결됨김영한의 실전 자바 - 기본편
static 메서드와 this 관련해서 질문이 있습니다.
public class DecoData { private int instanceValue; private static int staticValue; public static void staticCall() { System.out.println(this.instanceValue); } .... }안녕하세요! 강의에서 "static 영역 입장에서 힙 영역에 있는 인스턴스의 참조값을 몰라서 인스턴스 변수에 접근할 수 없다." 라고 얘기를 해주셨는데 그러면 this는 클래스 본인의 인스턴스 참조값이니 이 this를 이용하면 static 메서드에서도 인스턴스 변수에 접근할 수 있지 않을까? 라는 생각을 해서 코드를 짰는데 오류가 났습니다. 왜 static 메서드 영역에서 this를 사용해도 인스턴스 변수에 접근할 수 없나요?감사합니다.
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 조회 관련 질문 있습니다
"스프링 빈 조회" 내용 중 질문 있습니다.아래는 제가 질문이 있는 코드 부분입니다.class ApplicationContextBasicFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("빈 이름으로 조회") void findBenaByName() { MemberService memberService = ac.getBean("memberService", MemberService.class); assertThat(memberService).isInstanceOf(MemberServiceImpl.class); } ,,, }여기서 빈을 조회할 때는 타입을 MemberService.class로 조회하는데 조회한 빈을 검증할 때에는 MemberServiceImpl.class 로 이 타입의 인스턴스 인지를 확인하는데 이렇게 하는 이유가 AppConfig에서 memberService() 메소드가 스프링빈으로 등록될 때 아래 처럼 반환하는 객체가 MemberServiceImpl 이라서 빈에 등록될 때 MemberServiceImpl 로 등록되어서 그런건가요??@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } ,,, }직접해보니 isInstanceOf(MemberService.class)도 되더라구요.제가 아직 배우는 단계라 살짝 헷갈려요 ㅠㅠ 문장이 너무 길지만 알려주시면 감사하겠습니다 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
Cannot invoke "hello.core.member.Member.getGrade()" because "member" is null
20번째 줄에서 오류가 발생합니다。멤버는 잘 등록된것을 확인 했습니다。discountPolicy에서 죽는것 같습니다。 관련 클래스입니다。아래 getGrage()에서 오류가 발생 하는듯