묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
Accessing non-final property number in constructor
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.먼저, 좋은 강의를 만들어주셔서 감사합니다. 잘 이해가 되지 않는 부분이 있습니다.Accessing non-final property number in constructor가 발생하는 이유를 다음과 같이 정리해보았는데 맞을까요??하위 클래스(Derived)를 인스턴스화하면서 상속받고 있는 상위 클래스(Base)가 먼저 생성된다.init 블럭이 생성자보다 먼저 호출되므로, init 블럭에서 프로퍼티에 접근하면 초기화되지 않은 기본값을 갖는다.init 블럭이 호출되고 하위 클래스에서 전달한 값이 상위 클래스 생성자에 있는 프로퍼티 값으로 초기화된다.하위 클래스의 init 블럭이 호출될 때, number 프로퍼티 값은 상위 클래스가 갖는 number 프로퍼티 값을 출력한다."Accessing non-final property number in constructor 가 경고창이 드는 이유는 init 블럭에서 초기화되지 않은 number 프로퍼티에 접근했기 때문이다." 라고 정리하면 될까요?!감사합니다.open class Base( open val number: Int = 100 ) { init { println("Base Class") /** * 호출 순서 : init 블럭 -> 생성자 * 따라서 init 블럭에서 number 프로퍼티에 접근하면 초기화되지 않은 초기값인 0을 갖게 된다. */ println("Base Class number ${number}") } }class Derived( override val number: Int ): Base(number) { init { println("Derived Class") println("Derived Class number : ${number}") } }
-
미해결스프링 핵심 원리 - 기본편
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'beanA' available 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 정확히 오류가 무엇인지 모르겠어요 ㅠㅠ
-
미해결김영한의 실전 자바 - 기본편
이늄 클래스 혹은 레코드 메서드 상속 시 인터페이스 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 둘 다 되게 편하고 좋은 거 같은데 이런 걸 아예 사용 안 하는 것은 코틀린을 쓰는 의미가 크게 반감되는 거 같기도 해서, 뭔가 다른 더 좋은 방법이 있을 것 같기도 합니다.우빈님 같은 경우에는 이런 문제를 어떻게 해결하시는 지 궁금합니다!감사합니다.