44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결김영한의 실전 자바 - 기본편
객체지향프로그래밍 파트 관련 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요,강사님의 좋은 강의 감사드리며, 열심히 듣고 있습니다.다름 아니라, MusicPlayerMain3 관련 질문드립니다.우선 관련 코드를 보여드립니다.MusicPlayerData data = new MusicPlayerData();on(data);volumeUp(data);volumeUp(data);volumeDown(data);showStatus(data);off(data);}static void on(MusicPlayerData data){data.isOn = true;System.out.println("음악 플레이어를 실행합니다.");}static void off(MusicPlayerData data){data.isOn = false;System.out.println("음악 플레이어를 종료합니다.");}이 코드에서volumeUp과 volumeDown 메서드는 반환 타입이 void입니다.main 메서드 안에는 볼륨 관련 메서드를 호출하고 있고,따로 메서드 호출 결과를 저장할 변수는 선언되어 있지 않습니다.그럼에도 volume 값이 메서드 호출 이후 지속적으로 업데이트 되는 것은,기본적으로 main 메서드에서 생성한 data가 참조값을 갖고 있고, 메서드의 매개변수 역시 data와 같은 참조값을 갖고 있으므로, 따로 return type과 저장할 변수를 선언하지 않았어도 참조값이 가르키는 인스턴스의 value 값이 volumeUp, Down 메서드 호출 할 때마다 업데이트 되는 것인가요? 또한 만약 같은 코드가 기본형을 다루는 메서드 였다면 값이 업데이트 되지 않는 것인지 확인하고 싶습니다.제가 이해한 것이 맞는지 확인하고 싶습니다.감사합니다.
- 미해결김영한의 실전 자바 - 기본편
클래스 레벨 접근 제어자에 protected가 사용할수 없는 이유가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 클래스 레벨 접근 제어자에 protected가 사용할수 없는 이유가 궁금합니다
- 미해결김영한의 실전 자바 - 기본편
super-생성자 강의 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.ClassA에 매개변수가 없기 때문에 명시적으로 호출하지 않아도 자동으로 호출된다고 하셨는데, 그렇다면 아래 코드에서도 명시적으로 부모 클래스를 호출하지 않아도 되지 않을까 싶어서 문의 글 남겨드립니다! 컴파일 진행 시 정상 작동되고, 생각해 보아도 왠지 필요 없을 것 같다고 생각이 들어서 질문 글 한 번 남겨드립니다! public class ClassB extends ClassA { public ClassB(int a) { this(a, 0); System.out.println("ClassB 생성자 a = " + a); } public ClassB(int a, int b) { //super(); <-생략 가능하지 않나요? System.out.println("ClassB 생성자 a = " + a + ", ClassB 생성자 b = " + b); } }
- 미해결김영한의 실전 자바 - 기본편
VarChange1 예제 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 다름 아니라 VarChange1 예제 관련 질문 드립니다. int a = 10int b = a 이때, a =20으로 한다면, 우선 변수 a에 20이 들어가고, int b = a이니변경된 a의 값이 복사 되어 b값이 업데이트 되어야 하는 것 아닌가요?잘 이해가 되지 않습니다. 프로그램 상 위에서부터 순차적으로 코드를 읽어, 이미 int b = a가 실행되었고, loop를 돌리거나 b = 값 과 같이 따로 적어주지 않는 이상 b의 값이 업데이트 되지 않는 것으로 이해해도 될까요?앞에서 Java - start 편에서는 이해가 되던게, 갑자기 이해가 안됩니다.
- 미해결김영한의 실전 자바 - 기본편
[배열 도입 - 리펙토링] 향상된 for문질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 🙂 ClassStart5 클래스에서 향샹된 for문으로 만 사용하려고 하는데 Students s와 같은 변수를 담아둔다고 헀을 때 아래 코드처럼 해야 실행이되더라구요, package class1; public class ClassStart5 { private static int i; public static void main(String[] args) { Student student1 = new Student(); // 학생을 담아둘 수 있는 변수를 선언 student1.name = "학생1"; student1.age = 15; student1.grade = 90; Student student2 = new Student(); student2.name = "학생2"; student2.age = 16; student2.grade = 80; Student[] students = {student1, student2}; for (Student student : students) { Student s= students[i]; System.out.println("이름: " + s.name+ " 나이: " + s.age + " 성적:" + s.grade); } } }다만 자꾸 컴파일 에러가 나서 확인해보니 위의 private static int i; 코드 때문인거 같은데 별도 선언을 해줘야하는 이유를 정확히 알수 있을까요? s 변수에 담아두지 않고 아래처럼 해도 int i를 선언해야 하는 거 같습니다.코딩자체가 입문이라 장황하게 문의드린 점 양해부탁드리며 답변 기다리겠습니다. 감사합니다! Student[] students = {student1, student2}; for (Student student : students) { System.out.println("이름: " + students[i].name+ " 나이: " + students[i].age + " 성적:" + students[i].grade);
- 미해결김영한의 실전 자바 - 기본편
상속시 메모리 구조와 @Overriding 어노테이션 관련 질문 드립니다.
안녕하세요.좋은 강의 정말 재미있게 잘 수강하고 있습니다. '상속과 메서드 오버라이딩' 강의 내용 관련하여 궁금한 점이 생겨 질문 드립니다. A와 B는 강의에서 설명해주신 내용입니다. [A.상속시 메모리 구조]상속한 클래스의 메서드를 호출하는 경우에1)본인 타입에서 해당 메서드를 먼저 찾고2-1) 없으면 부모 타입에서 찾는다2-2) 있으면 종료 [B. @Overriding]자식 클래스의 메서드에 @Overriding 애노테이션을 붙여 오버라이딩 수행 시, 부모 클래스에 해당 메서드가 존재하지 않으면 컴파일 오류가 발생 그런데 여기에서 B 처럼 동작하려면 A의 2-2 경우에 자식 타입만 조사하고 종료하는 것이 아니라, 컴파일 타임에 부모 클래스의 메서드도 조사해야하지 않나요?@Overriding 애노테이션을 사용했을 때 실제로 어떤식으로 동작하는지 궁금합니다. 감사합니다.
- 해결됨김영한의 실전 자바 - 기본편
질문있습니다
public class BabyDog extends Dog{ @Override public void sound() { System.out.println("낑낑"); } } BabyDog라는 클래스를 만들고 Dog를 상속받았을경우메인클래스에서 soundAnimal(dog)를했을때 제가생각하는 이미지는sound() Animalsound() Dogsound() BabyDog이렇게돼서 결국 맨아래 BabyDog sound가불려서낑낑이나올거같은데 멍멍이나오더라구요어떤점을 잘못이해한건지 알려주실수있을까요?
- 미해결김영한의 실전 자바 - 기본편
2. 기본형과 참조형 수업자료 오타있어서 제보합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]2. 기본형과 참조형 수업자료 오타있어서 제보합니다.2. 기본형과 참조형의 pdf 파일 기준 p.5에 두 번째 실행결과에 a=10, b=20이라고 되어있는데 둘의 값이 바뀌어야 해서 제보드립니다.감사합니다.
- 미해결김영한의 실전 자바 - 기본편
메서드의 메모리 상 위치
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]상속 강의를 듣던 중 궁금증이 생겨 남깁니다.상속 관계에 있는 두 클래스가 있을 때, 자식 클래스의 인스턴스를 생성하면 부모 클래스의 인스턴스가 같이 메모리 상에 생성된다고 하셨습니다. 그런데 이전에 자바 메모리 구조 강의에서는 메서드는 Heap 영역이 아닌 클래스 영역에 존재하는 것이고 메서드 호출 시 클래스 영역으로 찾아가 메서드를 호출한다고 이해했습니다. 상속 관계에 있는 두 클래스의 메서드가 메모리 상에서 어떤 방식으로 호출되는 것인지 궁금합니다.
- 미해결김영한의 실전 자바 - 기본편
Caw -> Cow 오타 안 고치신 건가요??
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]PDF 교안 최신버전(20240411 ver)으로 다시 확인해봤는데 Caw 오타 그대로인거 같아서 문의드립니다.
- 미해결김영한의 실전 자바 - 기본편
객체지향 관련하여 질문드립니다.
안녕하세요. 저는 주니어 개발자 입니다. 취업을 위해 스프링 공부에만 급급하여 이해하지도 못한 채 넘어갔던 자바 기초 지식을 이제서야 강사님 강의를 통해 이해가 되는 것 같아 정말 감사드립니다. 현재 제가 있는 실무에서는 객체지향을 잘 사용하고 있지 않은 것 같고 부족하다고 생각되어 이번 강의를 계기로 객체지향 관련해서 더 공부하고 싶다는 생각이 들었습니다. 앞으로 강사님 로드맵 자바 (기초 > 중급 > 고급) -> 스프링 .. 이런식으로 차근차근 들을 예정인데 이 로드맵을 따라가면 더욱 객체지향을 이해할 수 있는지 아니면 따로 추가적으로 공부를 해야할지 궁금하여 질문드립니다. 감사합니다.
- 미해결김영한의 실전 자바 - 기본편
인스턴스 메서드와 클래스 메서드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]클래스 메서드와 인스턴스 메서드 모두 메서드 영역에 존재한다고 하셨는데, 클래스 메서드는 인스턴스 생성 없이도 사용 가능하지만 인스턴스 메서드는 인스턴스 생성 없이는 사용이 불가능한 걸로 이해했습니다. 그럼 Java 내부적으로 같은 메서드 영역에 속한 클래스 메서드와 인스턴스 메서드를 어떻게 구분하여 클래스 메서드는 사용 가능하도록, 인스턴스 메서드는 사용 불가능하도록 처리하는 것인가요?
- 미해결김영한의 실전 자바 - 기본편
자바 메모리 구조에 대해 질문 있습니다.
클래스 정보들이 메서드 영역에 올라 간다고 했는데 만약 A라는 클래스에 멤버 변수, 메서드, 생성자 들이 존재한다고 할때 값이 아닌 코드들 자체가 이진수로 바껴서 메서드 영역에 올라가는 건가요?기본형 변수든 참조형 변수든 변수 자체를 가리키는 주소가 따로 있는지 궁금합니다.pdf 자료 3페이지에 "자바에서 특정 클래스로 100개의 인스턴스를 생성하면, 힙 메모리에 100개의 인스턴스가 생긴다. 각각의 인스턴스는 내부에 변수와 메서드를 가진다." 라는 내용이 있는데요 여기서 내부에 변수와 메서드를 가진다. 부분이 이해가 안갑니다. 변수를 가진다는건 변수에 담긴 값과 변수 정보가 저장된다는건가요? 그리고 메서드를 가진다는건 이미 메서드 영역에 메서드 코드가 저장되어 있는데 왜 힙 영역에도 저장되는지 모르겠습니다. 감사합니다.
- 미해결김영한의 실전 자바 - 기본편
메서드 시그니쳐 관련 질문
안녕하세요.메서드 관련 질문입니다.컴파일이 될 때 메서드 영역 > 클래스 영역 이 부분에 클래스의 관련 코드들이 다 들어가 있는 걸로 이해했는데 그러면 다음의 두 경우는 어떻게 이해하면 될까요 ? (두 경우 다 추상 클래스, 인터페이스에는 메서드의 바디가 작성되어 있지 않고 나중에 작성되는 경우) -> 메서드 영역의 클래스 영역에 처음에는 바디가 없으니 관련 정보가 전혀 없을 거 같은데 이와 같이 나중에 오버라이딩을 해주었을 때 메서드 영역의 클래스 영역에서 어떻게 되는지 궁금합니다. 새로운 클래스 영역에 메서드로 정의되는 부분이 아니라 기존에 클래스 영역에서 정의가 되어야 하는데 문제는 클래스 영역의 기존 메서드를 수정하자니 다음의 두 케이스는 해당 객체를 생성할 때에만 적용되는 일회성 코드라 ...2.1 AbstractAnimal은 추상클래스로 sound()가 추상 메서드입니다.AbstractAnimal animal = new AbstractAnimal() { @Override public void sound() { System.out.println("test"); }};2.2 InterfaceAnimal interface 입니다.InterfaceAnimal interfaceAnimal = new InterfaceAnimal() { @Override public void sound() { System.out.println("test"); } @Override public void move() { System.out.println("test"); } };추상 메서드의 경우 메서드 시그니처만 메모리에 로드되었다 실행시점에 구체화 시킨 클래스에서 구현된 메서드가 메모리에 로드된다고 하셨는데 위의 예제를 보면 상속받아 메서드를 오버라이딩 한 것이 아니라 기존에 메서드 시그니처만 존재하는 클래스에서 일시적으로 구현한 방식입니다.이럴 때에는 메모리 영역의 클래스 영역에서 어떤 로직이 수행되나요 ? (위의 예제처럼 실행될 때 익명객체 처럼 구현하여 객체 생성할 때)
- 해결됨김영한의 실전 자바 - 기본편
자바 메모리 관련 질문
메서드 영역은클래스 정보static 영역런타임 상수 풀이렇게 세가지로 구성되어 있는걸로 알고 있습니다.static 메서드와 그냥 메서드 둘다 클래스 정보에 저장되는게 맞지만, 둘의 차이는 참조값(인스턴스) 없이 호출 가능하느냐, 아니냐의 차이가 맞을까요?만약 아니고 static 메서드는 static 영역에 저장된다고 한다면, static 영역에 있기 때문에 static 메서드는 참조값 없이 호출 가능한것 인가요?
- 해결됨김영한의 실전 자바 - 기본편
함수와 메서드
안녕하세요.수업 정말 잘 듣고 있습니다.입문 편이랑 기본 편 복습 중에 질문 하나 드립니다.인터넷에서 검색해 보니static이 붙은 정적 메서드, 클래스 메서드를 함수라고 부르기도 하고static이 붙지 않은 인스턴스 메서드를 메서드라고라고 부르기도 한다는데요.위와 같이 구분해서 부르는 건 맞는 건가요?
- 미해결김영한의 실전 자바 - 기본편
메서드 영역의 메서드 질문
안녕하세요.메서드 관련 질문입니다.메서드는 공통된 기능이기 때문에 인스턴스 변수처럼 내부에 가지고 있지는 않고 메서드 영역에 있는 걸 필요할 때(호출할 때) 가져와서 쓴다.이것과 관련하여 질문 3가지 문의 드립니다.1. 각각의 객체에는 필드값만 가지고 있고 메서드는 아예 가지고 있지 않은거죠 ?2. 컴파일이 될 때 메서드 영역 > 클래스 영역 이 부분에 클래스의 관련 코드들이 다 들어가 있는 걸로 이해했는데 그러면 다음의 두 경우는 어떻게 이해하면 될까요 ? (두 경우 다 추상 클래스, 인터페이스에는 메서드의 바디가 작성되어 있지 않고 나중에 작성되는 경우) -> 메서드 영역의 클래스 영역에 처음에는 바디가 없으니 관련 정보가 전혀 없을 거 같은데 이와 같이 나중에 오버라이딩을 해주었을 때 메서드 영역의 클래스 영역에서 어떻게 되는지 궁금합니다. 새로운 클래스 영역에 메서드로 정의되는 부분이 아니라 기존에 클래스 영역에서 정의가 되어야 하는데 문제는 클래스 영역의 기존 메서드를 수정하자니 다음의 두 케이스는 해당 객체를 생성할 때에만 적용되는 일회성 코드라 ...2.1 AbstractAnimal은 추상클래스로 sound()가 추상 메서드입니다.AbstractAnimal animal = new AbstractAnimal() { @Override public void sound() { System.out.println("test"); } };2.2 InterfaceAnimal interface 입니다.InterfaceAnimal interfaceAnimal = new InterfaceAnimal() { @Override public void sound() { System.out.println("test"); } @Override public void move() { System.out.println("test"); } };
- 미해결김영한의 실전 자바 - 기본편
타입과 참조값
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님 다형성 참조를 보다가 질문합니다Parent poly = new Child();부모 타입의 변수는 부모의 데이터를 사용 할 수 있으므로 자식 타입을 대입 할 수 있고 Child poly = new Parent();자식 타입의 변수는 자식 데이터를 사용 할 수 있지만 부모 타입이 범위가 더 커 자식이 담을 수 없는게 맞을까요?
- 미해결김영한의 실전 자바 - 기본편
오버라이딩 질문
안녕하세요.아래 작성해주신 메서드 오버라이딩 관련한 설명 확인했습니다. 한 가지 궁금한 건 답변에서처럼 실제 런타임시에는 변수의 타입이 아닌 인스턴스의 타입을 우선적으로 본다고 한다면, method 오버라이딩은 자식 타입의 method(오버라이딩된)을 보는 게 맞는데 필드값은요 ? 위에 작성해주신 내용이 필드에는 해당이 안 되고 메서드에만 해당이 되는 내용인가요 ?
- 해결됨김영한의 실전 자바 - 기본편
섹션 12. 다형성과 설계 예제 관련 질문
안녕하세요.<다형성과 설계-문제와 풀이> 강의를 듣는 중에 의문이 생겨 문의드립니다.수업 내용에 따라 Sender 클래스는 인터페이스로 작성된 상태입니다.사진과 같이 "Sender[] senders = "로 배열을 생성하여도, 배열 안의 값들은 Sender형이 아닌 각각 EmailSender, SmsSender, FaceBookSender형으로 생성이 되는 건가요?만약 Sender형으로 인스턴스가 생성이 된다면, 인터페이스는 인스턴스를 생성할 수 없기 때문에 NullPointerException이 발생해야 할 것 같아서요.답변 부탁드립니다. 감사합니다.