inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

상속 관계와 캡슐화 질문

해결됨

김영한의 실전 자바 - 기본편

안녕하세요 영한님 강의 잘 보고 있습니다. 상속 관계와 캡슐화에 대해 궁금증이 있어 질문 남깁니다. 문제를 풀 때 부모와 자식은 각각 별도로 생성되지만, 하나의 묶음으로 생각되어 자식 클래스에서 부모 클래스의 필드에 직접 접근 가능하여야 한다 생각했습니다 그리하여 부모 클래스의 필드를 protected 로 생성하여 풀었는데, 영한님 문제 풀이를 보니 private 으로 감추시는걸 보고 의문점이 생겼습니다 private 으로 감춘다면 기존 부모 클래스 기능을 오버라이딩 하여 부모 필드에 접근이 필요 할 때는 getter/setter 같은 메소드를 만들어서 접근 해야 하는 걸까요? 아래는 Car Class 의 move 메소드를 GasCar Class 가 재정의 하는 코드를 간략하게 작성해보았습니다 public class Car { private int speed; public void move(){ speed++; System.out.println("speed : " + speed); } protected int getSpeed() { return speed; } protected void setSpeed(int speed) { this.speed = speed; } } public class GasCar extends Car{ @Override public void move() { int speed = getSpeed() + 2; setSpeed(speed); System.out.println("speed : " + speed); } } 따라서 상속 관계라도 일반 객체를 사용하는 입장과 동일하게 캡슐화를 해야 하고, 확장의 여지를 두고 부모 클래스의 필드에 접근하는 메소드를 만들어야 하는것인지 궁금합니다!

  • java
  • 객체지향
9kku2 댓글 1 좋아요 1 조회수 473

메모리 영역에 관해서 질문드릴게요

미해결

김영한의 실전 자바 - 기본편

이 코드에서요 메서드영역,스택영역,힙영역이 조금 헷갈려서요 public static void main(String[] args) 이 main메서드는 스택영역이고 public static int sum(int[] array){ int sum = 0; for (int sum1: array) { sum += sum1; } return sum; } 이 sum 메서드는 메서드 영역, int[] array 매개변수는 heap영역 sum메서드안에 있는 변수들은 stack영역 이렇게 이해하면될까요?

  • java
  • 객체지향
자바마스터하자 댓글 1 좋아요 0 조회수 583

어노테이션 사용법에 대해 (feat: @ComponentScan.Filter)

미해결

스프링 핵심 원리 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. "컴포넌트 스캔과 의존관계 자동 주입 시작하기" 강의를 듣던 중 궁금한 것이 생겼습니다. 다른 언어를 주로 사용한 제가 자바 어노테이션에 익숙하지 않아서 생기는 궁금증인 것 같습니다. 위의 코드를 보면 @ComponentScan의 인자로 @ComponentScan.Filter가 사용되는 것을 볼 수 있습니다. 근데 특이하게 '@'가 붙어있습니다. 반대로 Configuration는 어노테이션인데도 불구하고 "@Configuration.class"가 아닌 "Configuration.class"라고 쓰입니다. 왜 어떤 것은 @가 붙고 어떤 것은 @이 안 붙는지 알 수 있을까요? reference로는 뭘 보면 될까요?

  • spring
  • 객체지향
ybjeon01 댓글 1 좋아요 0 조회수 251

ApplicationContext가 여러 인터페이스를 상속받은 것이 어느곳에 활용되는지 잘 모르겠어요.

해결됨

스프링 핵심 원리 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. "BeanFactory와 ApplicationContext" 강의를 보던 도중 궁금한 것이 있어 질문을 드립니다. ApplicationContext가 단순히 BeanFactory를 넘어 여러 강력한 기능을 제공하기 위해 다른 인터페이스도 상속한다고 합니다. 그런데 EnvironmentCapable를 제외하고 다른 인터페이스들이 ApplicationContext에서 무엇을 위해 활용되는지 잘 모르겠습니다. MessageSource, ApplicationEventPublisher, ResourceLoader들이 ApplicationContext 인터페이스에서 실무에서 어떻게 응용되는지 알 수 있을까요?

  • spring
  • 객체지향
ybjeon01 댓글 1 좋아요 0 조회수 397

no frameworks detected

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

안녕하세요. 다운 받은 소스파일을 실행하려고 하는데 강의에서 나온 순서로 진행했는데도 no frameworks detected 나와서 어떻게 해결해야 할 지 모르겠어서 질문드립니다. JDK21 사용중입니다.

  • java
  • 객체지향
autfoy 댓글 2 좋아요 1 조회수 882

@Configuration 어노테이션 지정하는 이유

해결됨

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용]메인 메서드에서 스프링 컨테이너를 생성하고 AppConfig 클래스를 구성 정보로 쓰기 위하여 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class)를 하였습니다.그런데 AppConfig클래스를 환경 설정해주는 구성 정보 클래스로 지정하기 위해서 @Configuration 어노테이션을 지정하였는데 앞에서 AppConfig.class로 지정해줄 거면 굳이 @Configuration어노테이션으로 지정하는 이유가 궁금합니다

  • spring
  • 객체지향
경민 댓글 1 좋아요 0 조회수 402

12.다형성과 설계.pdf 파일 오타 제보합니다.

미해결

김영한의 실전 자바 - 기본편

김영한님 안녕하세요. 유스방에서 늘 신세지고 있는 레이지 로딩 입니다. 2년차 주니어로 일하며 기초가 제대로 잡히지 않았는데 너무 기술에만 집착하는 제 자신을 보며 초심으로 돌아가야 겠다고 마음먹은 참에 마침 감사하게도 자바 기초 강의를 내주셔서 감지덕지하며 공부하고 있습니다. 강의 보는 중 오타 발견하여 남겨둡니다. 먄약 -> 만약 지난 3월에 출시하신 [스프링 부트] 강의에 이어 또 한번 강의에 미약하게나마 도움을 드릴 수 있어 영광입니다. 내년에 또 인프콘에서 인사드릴 수 있으면 좋겠습니다. 지식을 공유해 주셔서 항상 감사합니다.

  • java
  • 객체지향
Lazy Loading 댓글 1 좋아요 0 조회수 386

객체의 기능보다 속성을 먼저 추출하는 것에 대해 의견을 여쭤보고 싶습니다.

해결됨

객체 지향 프로그래밍 입문

안녕하세요. 강사님. 객체는 제공하는 기능으로 정의된다! => 회원 객체 (암호 변경하기 기능) 대부분의 프로그램은 정보 표현을 위한 데이터(구조체, 객체)는 존재하기 마련일텐데요. 제가 생각하기에 회원이라는 객체는 초기 설계 과정에서 제공해야 될 기능에 중점을 두기보다는 "일반적으로 표현해야 될 정보에 기반(표현 정보 = 관리해야 될 데이터)해서 추출되지 않나?" 가 저의 생각입니다. 여기서 궁금한점은 표현해야 될(관리해야 될 데이터) 정보를 구조화한 것에 관련된 데이터를 조작하는 기능을 추가해도 외부에 제공하는 기능으로 정의된다는 말씀은 만족한다고 볼 수 있을까요 ? 제가 강의를 듣고 정리하자면 객체를 설계할 때는 외부에 제공할 기능에 중점을 두고 설계를 해야되는 것이라고 받아들였는데 기능보다 데이터가 중심이 되는 구조체성 자료에 기능을 할당하는 것도 올바른 방향인건지 여쭤보고 싶습니다. 감사합니다!

  • 객체지향
home 댓글 1 좋아요 0 조회수 453

문제 풀이의 메소드에 public이 들어가는 이유가 궁금합니다.

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 메모리구조와 static의 강의 부분에서 정답을 보면 메소드 부분에 public static ~~~로 시작하는 모습을 볼수가 있는대 public을 붙이는 이유가 있을까요?? 문제 조건에는 public을 붙여야 한다는 말이나 비슷한 어구(어디서든지 사용이 가능해야하며 등)도 없고 default로도 문제에서 요구하는 기능을 구현하는데 문제가 없어서요. 순수하게 궁금한 마음에서 여쭈어봅니다.

  • java
  • 객체지향
pof1996 댓글 1 좋아요 0 조회수 327

[버그 가능성] "새로운 할인 정책 개발" 강의에서 int보다 floating point나 decimal을 사용해야 하지 않나요?

해결됨

스프링 핵심 원리 - 기본편

[질문 내용] 안녕하세요. "새로운 할인 정책 개발" 부분을 보고 있다가 이부분이 그냥 마음에 걸려서 질문을 올립니다. 사진을 보면 discountPercent를 int로 쓰셨는데 만약 price가 10 미만이면 discount가 항상 0이 나와서요. 아마 튜토리얼이라서 간단히 int를 쓰지 않았을까 하지만 질문을 올립니다. 감사합니다.

  • spring
  • 객체지향
ybjeon01 댓글 1 좋아요 0 조회수 344

싱글톤 관련 질문 있습니다.

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 아래 코드에서 보면 SingletonService 클래스를 정의하고 그 안에 스태틱 변수로 SingletonService 타입인 instance를 정의하고 있습니다. 클래스 안에 같은 클래스를 또 정의하는 것이 이해가 안가는데, static이라서 가능한 걸까요? public class SingletonService { private static final SingletonService instance=new SingletonService(); public static SingletonService getInstance(){ return instance; } private SingletonService(){ } public void logic(){ System.out.println("싱글톤 객체 로직 호출"); } }

  • spring
  • 객체지향
이준승 댓글 1 좋아요 0 조회수 437

static에 대해서 궁금합니다!!

미해결

김영한의 실전 자바 - 기본편

안녕하세요. static에 대해 궁금한 것이 있어서 질문을 남깁니다!! static의 생존주기가 메모리에 생성이 되면 Java를 새로 실행이 될 때까지 유지되는 것으로 알고 있어요. 그럼 Heap 영역의 GC처럼 static을 정리해주는 역할을 하는 것이 있을까요? 아니면 개발자가 메모리 누수가 없도록 따로 관리를 해줘야 하나요? 이 부분이 궁금합니다~

  • java
  • 객체지향
RapaHello 댓글 1 좋아요 1 조회수 235

여러 생성자가 있을 때, this()의 역할

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! 영한님 강의 너무 잘 보고 있습니다! 생성자 강의를 듣고 있다가 this()에 관한 걸 배웠을 때, 이런 질문이 떠 올랐습니다. this()는 어떤 클래스의 생성자를 사용하고 싶을 때 사용하는 것이라고 했는데, 만약 오버로딩으로 만든 생성자가 3개 이상일 때, this()는 그 생성자들 중에서 어떤 것을 가리키는 걸까? 에 대한 의문이 생겼습니다. 제가 직접 IDE에서 실험을 했을 땐, this()에 어떤 파라미터를 사용하느냐에 따라, 해당 파라미터와 같은 생성자가 사용되는 것 같은 결과가 나왔습니다. 그렇다면 this()에 대해, this() 안에 파라미터와 같은 생성자가 호출된다고 생각해도 되는 걸까요?

  • java
  • 객체지향
노동준 댓글 1 좋아요 0 조회수 412

매서드 캡슐화와 테스트 코드

해결됨

김영한의 실전 자바 - 기본편

선생님, 안녕하세요. 내부에서만 사용하는 매서드는 private으로 캡슐화 해두는 것이 좋은 구현이라고 알고 있고, 이번 수업에서도 그런 내용을 확인할 수 있었는데요, private 매서드들도 테스트 코드를 작성해서 테스트 해보고싶은 경우가 자주 발생합니다... 이런 경우 고민을 하다가 몇 가지 방법이 있겠으나 ... 그냥 public 으로 열어버리고 테스트 코드를 두곤 했는데요, 이런 경우에 선생님은 실무에서 어떻게 하셨는지, 가장 좋은 practice가 무엇인지 알고 싶습니다. 항상 감사합니다..^^

  • java
  • 객체지향
Summer Kim 댓글 1 좋아요 3 조회수 562

의존관계 자동주입 - 조회 빈이 2개 이상일 경우에 궁금증이 있습니다.

해결됨

스프링 핵심 원리 - 기본편

@Autowired 필드 명, @Qualifier, @Primary 강의 부분에서 궁금한 점이 생겼습니다. 결국에 조회 빈이 2개 이상인 경우엔 위의 어노테이션을 활용해서 우선순위를 지정해준다고 되어있는데, 필드명을 수정해주거나, Qualifier의 이름을 변경해야하는 상황이 생긴다면 ( ex) OrderServiceImpl의 discountPolicy를 fixDiscountPolicy 에서 rateDiscountPolicy 로 할인 정책을 변경하고 싶다면) 직접 구현체들(클라이언트 코드)을 수정해줘야하는데 ( ex) Autowired 된 DiscountPolicy의 변수명을 수정하거나, @Qualifier의 이름을 수정해서) 이는 OCP 원칙에서 위배되는 것은 아닌지 궁금합니다. 나아가 이런식으로 실제 구현체를 수정해줘야하는 것이라면 discountPolicy 의 타입명만 DiscountPolicy일 뿐이지, 타입명 자체를 FixDiscountPolicy 로 지정하거나 RateDiscountPolicy로 지정해서 사용하는 DIP 위반하는 코드들과 무슨 차이인지 잘 모르겠습니다. 순수 자바 코드 자체는 해당 원칙들을 지키고 있는 것이니까 상관없는것인가요?

  • spring
  • 객체지향
한현진 댓글 1 좋아요 0 조회수 276

질문있습니다

미해결

스프링 핵심 원리 - 기본편

package hello.core.beanfind; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoUniqueBeanDefinitionException; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; public class ApplicationContextExtendsFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); @Test @DisplayName("부모 타입으로 조회 시, 자식이 둘 이상 있으면, 중복 오류가 발생한다.") void findBeanByParentTypeDuplicate(){ assertThrows(NoUniqueBeanDefinitionException.class,()->ac.getBean(DiscountPolicy.class)); } @Test @DisplayName("부모 타입으로 조회 시, 자식이 둘 이상 있으면, 빈 이름 지정하면 된다.") void findBeanByParentTypeBeanName(){ DiscountPolicy rateDiscountPolicy=ac.getBean("rateDiscountPolicy",DiscountPolicy.class); assertThat(rateDiscountPolicy).isInstanceOf(RateDiscountPolicy.class); } @Test @DisplayName("특정 하위 타입으로 조회") void findBeanBySubType(){ RateDiscountPolicy bean=ac.getBean(RateDiscountPolicy.class); assertThat(bean).isInstanceOf(RateDiscountPolicy.class); } @Test @DisplayName("부모 타입으로 모두 조회하기") void findAllBeanByParentType(){ Map<String,DiscountPolicy> beansOfType=ac.getBeansOfType(DiscountPolicy.class); assertThat(beansOfType).isEqualTo(2); for (String key : beansOfType.keySet()) { System.out.println("key= "+key+"value="+beansOfType.get(key)); } } @Test @DisplayName("부모 타입으로 모두 조회하기-Object") void findAllBeanByObjectType(){ Map<String,Object> beansOfType=ac.getBeansOfType(Object.class); for(String key:beansOfType.keySet()){ System.out.println("key = "+key +"value="+beansOfType.get(key)); } } @Configuration static class TestConfig{ @Bean public DiscountPolicy rateDiscountPolicy(){ return new RateDiscountPolicy(); } @Bean public DiscountPolicy fixDiscountPolicy(){ return new FixDiscountPolicy(); } } } 여기서assertThrows(NoUniqueBeanDefinitionException.class,()->ac.getBean(DiscountPolicy.class)); 이 부분이 왜 부모 타입으로 조회하는 건지 이해가 안갑니다. 상속을 한 적도 없고 그냥 타입을 넣어줬을 뿐인데 말이죠..ㅠ

  • spring
  • 객체지향
이준승 댓글 1 좋아요 0 조회수 198

인텔리제이 초기 실행화면

해결됨

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

안녕하세요. 섹션1 - 다운로드 소스 코드 실행 방법 강의에서 인텔리제이 첫 실행화면에서 화면과 같이 프로젝트 선택하는 창이 뜨는 것으로 보입니다.(강의 내용) 그러나, 인텔리제이를 처음 다운로드해서 수업과 같은 방식으로 따라했으나,, 저런 화면은 뜨지 않고 이전 작업에서 창을 닫기 전의 모습이 그대로 뜹니다. 강사님처럼 프로젝트를 선택하려면 별도의 설정이 필요한 내용인가요?

  • java
  • 객체지향
고양이 댓글 1 좋아요 0 조회수 790

초기화 선언 관련 질문

해결됨

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

안녕하세요!! 지금 배열 문제풀이 하고 있는데요, 보통 int sum = 0; 이런식으로 0값으로 초기화 시켜주잖아요 근데 어떤때는 double avg; 이런식으로 그냥 하는데 두개의 차이가 뭐지궁금해요 코드 만들다보면 계산식이 어디있냐에 따라 어떤때는 double avg; 쓰고 어떤때는 0으로 초기화시켜야 돌아가더라구요..! 혹시 정확하게 구분지을 수 있을까요?

  • java
  • 객체지향
나누스_개발 댓글 2 좋아요 2 조회수 473

xmlAppContext 오류

해결됨

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 계속 오류가 떠서 도움을 요청드리고자 글 남깁니다... 해결 부탁드립니다..

  • spring
  • 객체지향
현준섭 댓글 2 좋아요 1 조회수 964

질문있습니다

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 스프링 컨테이너에 등록하는 코드를 똑같이 작성했는데 기존과 실행결과가 같고, 디버그 실행문이 안뜹니다. 어디가 문제인가요?

  • spring
  • 객체지향
이준승 댓글 1 좋아요 0 조회수 342

인기 태그

인프런 TOP Writers

주간 인기글