44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결김영한의 실전 자바 - 기본편
상속에 따른 객체와 메모리 구조에 대해 질문드립니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 이번 강의를 완강 하다가 궁금한 점이 생겨서 질문 드립니다.위 그림에 따라인스턴스가 생성되면 인스턴스에 있는 객체들의 메서드는 메서드 영역에서 공유되기 때문에 인스턴스가 100개여도 메서드가 100개가 되진 않는다고 설명 해주셨는데요.하지만 상속 단계에서 이 그림을 보면 메서드가 메서드 영역에 있는 것이 아니라 각각의 인스턴스가 각자의 메서드를 가지고 있는 것으로 보이는데 제가 이해한게 맞을까요? 제가 이해한 바로는 상속받는 부모 메서드 까지 포함해서 만약 인스턴스가 100개라면 메서드도 따라서 100개인지 궁금합니다. 바쁘신 와중에도 답변 주시면 감사하겠습니다!
- 미해결김영한의 실전 자바 - 기본편
다형적 참조시에 생성자 호출 질문
Parent p = new Child(); 이런 형식으로 부모는 자식을 품을 수 있으니깐 저렇게 선언하면Child생성자도 호출이 되는 것 같더라고요. 메서드들은 오버라이딩이 된 것이 아닌 이상 자식 메서드를 사용할 수 없는데생성자는 생성시에는 자식도 호출이 된다고 생각해야하는걸까요?
- 미해결김영한의 실전 자바 - 기본편
접근제어자 파트 문제풀이질문 displayItem메서드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.public void displayItems(){ System.out.println("장바구니 상품 출력"); for (int i =0; i<itemCount; i++){ Item item = items[i]; System.out.println("상품명 : " + item.getName() + " , 합계 : " + item.getTotalPrice()); } System.out.println("전체 가겨 : " + calculateTotalPrice()); } public void displayItems2(){ System.out.println("장바구니 상품 출력"); for (int i =0; i<itemCount; i++){ System.out.println("상품명 : " + items[i].getName() + " , 합계 : " + items[i].getTotalPrice()); } System.out.println("전체 가겨 : " + calculateTotalPrice()); }위에거는 강의에서 짠 코드고 아래 displayItems2는 제가 짜본 코드인데 밑에처럼 items[i].getName() 이런식으로 데이터를 받아오는거는 좋지 않은 방법인가요 ?
- 해결됨김영한의 실전 자바 - 기본편
인스턴스 메서드와 클래스 메서드 메모리 할당 위치
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]앞서 강의에서 변수는 메모리에 할당이 되고 메서드는 클래스 정보가 들어가있는 메서드 영역에 할당이 된다고 하셨는데, 인스턴스 메서드는 메서드 영역에 위치해 있고클래스 메서드는 메서드 영역 안에 static 영역에 있다는걸로 이해하면 되는걸까요?
- 미해결김영한의 실전 자바 - 기본편
메서드 추출 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.MusicPlayerMain3 클래스에서 만든 메서드static void on(MusicPlayerData data){ // 플레이어 켜기 data.isOn = true; System.out.println("음악 플레이어를 시작합니다."); }static void on2(){ MusicPlayerData data = new MusicPlayerData(); data.isOn = true; System.out.println("음악 플레이어를 시작합니다."); }강의에서 나온 on(MusicPlayerData data) 메서드처럼 매개변수를 넣지않고on2() 처럼 매개변수를 넣지않고 저런식으로 짜는건 좋지않은 방법인가요 ?
- 미해결김영한의 실전 자바 - 기본편
인스턴스 메서드의 인스턴스 소속
'인스턴스 메서드가 인스턴스에 소속되어 있다'는 부분이 잘 이해가 되지 않아 질문드립니다.이전 강의에서 메서드는 힙 영역이 아닌 메서드 영역에 존재한다고 배웠습니다. ClassA라는 클래스가 존재하고 해당 타입 인스턴스를 2개 만들었다고 가정해보겠습니다. 그리고 참조변수를 통해 인스턴스에 존재하는 인스턴스 메서드를 호출하게 되면, 메서드 영역에 존재하는 동일한 메서드 코드가 호출됩니다. 이 부분이 '인스턴스 메서드는 인스턴스에 소속'이라는 부분과 충돌되는 것처럼 느껴지는데요.여기에서 말하는 '소속'이 물리적으로 메모리 상 같은 영역에 소속되어 있다는 뜻이 아니라, 인스턴스를 생성해야 인스턴스 메서드를 사용할 수 있기 때문에 인스턴스에 소속되어 있다고 하신걸까요...??
- 미해결김영한의 실전 자바 - 기본편
서버와 클라이언트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]자동차가 서버, 드라이버가 클라이언트인걸까요? 웹서버와 클라이언트(브라우저)와는 아예 다른 개념인걸까요? 헷갈립니다 ㅠㅠ
- 미해결김영한의 실전 자바 - 기본편
추상메서드가 존재하지 않는 추상클래스
추상메서드가 존재하지 않는 추상클래스가 존재하는 것이 일반적인 상황은 아닌거죠?오직 자식 클래스에게 속성이나 기능을 제공할 목적으로 어떤 클래스를 만들었기에 해당 클래스는 인스턴스를 생성할 필요가 없다고 판단되는 경우, 추상클래스로 선언할 수 있겠다고 생각됩니다. 그렇다면 해당 추상클래스는 추상메서드가 단 1개도 존재하지 않는 것인데요. 이게 문법적으로는 오류가 없다는 것은 알겠지만 이러한 상황이 실무에서 발생하는 상황인지 알고 싶습니다.
- 미해결김영한의 실전 자바 - 기본편
부모 자식 타입
Parent poly= new Child() ;Child child = poly ; 가 자식이 부모를 담을 수 없어서 안된다고 하셨는데, 혹시 논리적으로 왜 그런지 알 수 있을까요? 왜냐하면 제 생각에는 결국에는 Child child = new Child(); 로 되어서 가능한거 아닌가요 ? 혹시 안되는 이유가 이미 parent poly 는 화살표가 parent 클래스를 향하고 있기 떄문에 아무리 참조값 안에 Child , Parent class 둘다 있어도 Child child = poly ; 할때 Child 가 parent 인스턴스를 우선 참조해서 오류가 발생하는건가요 ? 도무지 Child child = new Child () ; 는 가능한데Parent poly = new Child() ;Child child =poly(new Child) ; 가 안되는 이유를 모르겠습니다
- 미해결김영한의 실전 자바 - 기본편
cmd + O Override Method 기능 사용중에..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 선생님은 직접 extends/implements 키워드 뒤에 쓴 클래스나 인터페이스만 뜨던데 Object가 같이 뜹니다. Object는 안 뜨게 하는 방법 없을까요??
- 미해결김영한의 실전 자바 - 기본편
인터페이스 멤버변수 final 질문
인터페이스에서 제공하는 멤버변수에서 final이 붙는 이유가 궁금합니다. static의 경우, 인터페이스를 인스턴스화할 수 없기 때문에 애초에 인터페이스 차원에서 인스턴스 변수를 제공하지 않는다고 이해하였는데 final은 그 이유를 잘 모르겠습니다.
- 미해결김영한의 실전 자바 - 기본편
참조형과 메서드 호출질문있습니다.
참조형과 메서드 호출 - 활용 10분 20초에 null은 왜나오는건가요?
- 미해결김영한의 실전 자바 - 기본편
인텔리제이 오류
클래스 실행시에 간헐적으로 오류가 발생하네요.빌드를 10번하면 7번정도 오류가 발생하는것 같아요. 포트를 이미 사용중이라는 것 같은데... 인터넷에 쳐봐도 해결방법이 안나오네요...혹시 해결법 아시는분 계실까요?? Abnormal build process termination: C:\Users\박정찬\.jdks\openjdk-21.0.1\bin\java.exe -Xmx700m -Djava.awt.headless=true "-Djna.boot.library.path=C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.3/lib/jna/amd64" -Djna.nosys=true -Djna.noclasspath=true --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED "-Dpreload.project.path=C:/Users/박정찬/Desktop/인터넷 강의 자료/자바 김영한/java-basic" -Dpreload.config.path=C:/Users/박정찬/AppData/Roaming/JetBrains/IntelliJIdea2023.1/options -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Didea.IntToIntBtree.page.size=32768 -Djdt.compiler.useSingleThread=true -Daether.connector.resumeDownloads=false -Dio.netty.initialSeedUniquifier=1929828927587536610 -Dfile.encoding=x-windows-949 -Duser.language=ko -Duser.country=KR -Didea.paths.selector=IntelliJIdea2023.1 "-Didea.home.path=C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3" -Didea.config.path=C:/Users/박정찬/AppData/Roaming/JetBrains/IntelliJIdea2023.1 -Didea.plugins.path=C:/Users/박정찬/AppData/Roaming/JetBrains/IntelliJIdea2023.1/plugins -Djps.log.dir=C:/Users/박정찬/AppData/Local/JetBrains/IntelliJIdea2023.1/log/build-log "-Djps.fallback.jdk.home=C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/jbr" -Djps.fallback.jdk.version=17.0.7 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/박정찬/AppData/Local/JetBrains/IntelliJIdea2023.1/compile-server/java-basic_51dbb69c/_temp_ -Djps.backward.ref.index.builder=true -Dtmh.instrument.annotations=true -Dtmh.generate.line.numbers=true "-Djps.kotlin.home=C:\Program Files\JetBrains\IntelliJ IDEA 2023.1.3\plugins\Kotlin\kotlinc" -Dkotlin.incremental.compilation=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path=\"C:\Users\박정찬\AppData\Local\Temp\kotlin-idea-10692411316084801441-is-running\" -Dide.propagate.context=false -classpath "C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-launcher.jar" org.jetbrains.jps.cmdline.Launcher "C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-builders.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-builders-6.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-javac-extension.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/util.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/util-8.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/util_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/annotations.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/3rd-party-rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/protobuf.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/jps-model.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/javac2.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/forms_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/aether-dependency-resolver.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/idea_rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/JavaEE/lib/jasper-v2-rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/Kotlin/lib/jps/kotlin-jps-plugin.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/lib/util.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/eclipse/lib/eclipse-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/eclipse/lib/eclipse-common.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/ant/lib/ant-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/JavaEE/lib/javaee-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/uiDesigner/lib/jps/java-guiForms-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/space/lib/space-java-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/devkit/lib/devkit-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/platform-langInjection/lib/java-langInjection-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/javaFX/lib/javaFX-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/javaFX/lib/javaFX-common.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/Groovy/lib/groovy-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/Groovy/lib/groovy-constants-rt.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/maven/lib/maven-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/gradle-java/lib/gradle-jps.jar;C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/JPA/lib/jps/javaee-jpa-jps.jar" org.jetbrains.jps.cmdline.BuildMain 127.0.0.1 49155 24ad3385-4fa5-4cd4-9376-31335102b646 C:/Users/박정찬/AppData/Local/JetBrains/IntelliJIdea2023.1/compile-serverBe careful, logger will be shut down earlier than application: Unable to make field private static java.util.IdentityHashMap java.lang.ApplicationShutdownHooks.hooks accessible: module java.base does not "opens java.lang" to unnamed module @2f4d3709Build process started. Classpath: C:/Program Files/JetBrains/IntelliJ IDEA 2023.1.3/plugins/java/lib/jps-launcher.jarError connecting to 127.0.0.1:49155; reason: Address already in use: no further information: /127.0.0.1:49155io.netty.channel.AbstractChannel$AnnotatedSocketException: Address already in use: no further information: /127.0.0.1:49155Caused by: java.net.BindException: Address already in use: no further information at java.base/sun.nio.ch.Net.pollConnect(Native Method) at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682) at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:973) at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337) at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776) at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:689) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:652) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at java.base/java.lang.Thread.run(Thread.java:1583)Exiting.
- 미해결김영한의 실전 자바 - 기본편
1강 문제풀이 질문입니다.
강의 클래스와 데이터 문제풀이 6분 45초에서 아래와 같이 작성하면 productName에서 빨간 줄이 나오는데 객체를 생성을 안하고 바로 객체 배열에 접근해서 그러는건가요?package ex1;public class ProductOrderMain { public static void main(String[] args) { ProductOrder[] orders= new ProductOrder[3]; ProductOrder order1= new ProductOrder(); orders.productName="두부"; }}
- 미해결김영한의 실전 자바 - 기본편
강의:클래스가 필요한 이유 (9분11초)에대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.for 문 (studentNames.length) 부분에 studenAges 또는 studentGrade를 넣어도 결과 값은 똑같이 나오는데 맞는 코딩인가요?코린이라서 이런 식으로 질문하는 게 맞는지 모르겠네요답변 주시면 감사하겠습니다!
- 미해결김영한의 실전 자바 - 기본편
생성자 호출 시 볼륨이 100을 초과하는 경우
[질문 내용]생성자에서는 100초과의 경우를 따로 생각하지 않은 것으로 보입니다. 그렇다면 생성자를 호출할 때 파라미터로 200을 넣는 경우는 방지할 수 없는데요. (아직 다음 강의를 수강하지 않은 상태입니다. 혹시 해결 방법이 다음 강의에 있다면 알려주세요!)이런 경우 저는 다음과 같이 제어하는 방향을 생각했습니다.public Speaker(int volume){ if(volume > 100){ // 100을 초과할 수 없다고 경고하기 // volume을 최대 음량인 100으로 설정하기 System.out.println("음량은 최대 100을 넘길 수 없습니다.") System.out.println("음량을 최대 음량인 100으로 설정합니다.") this.volume = volume; } else{ this.volume = volume; } 혹시 현업에서는 어떤 방식으로 이를 제어하는지 궁금합니다.
- 미해결김영한의 실전 자바 - 기본편
다운캐스팅에 관하여 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 혼자서 공부를 하다가 다운캐스팅 주의점에 관하여 궁금한점이 생겨서 질문드립니다. 사진처럼 코드를 작성하니 ClassCastException이 발생하고 1이아닌 "a" 처럼 문자열을 넣으면 발생하지 않더라고요제가 어렵게 생각을 하는건지 모르겠는데 직접 정의한 클래스들로 다운캐스팅을 설명해주실때는 인스턴스의 참조값이 메모리상에 생성이 되고 없는 인스턴스로 다운캐스팅하려하면 런타임오류가 난다이런식으로 이해가 가는데 사진처럼 자바에 내장되어있는 Object나 String클래스로 저렇게 다운캐스팅할때는 어떤식으로 ClassCastException이 발생하는지 모르겠습니다. 저 코드에서 b에대한 참조값이 생성이 되는건가요?b에 int형이 들어오든 String타입이 들어오든 b는 Object타입인건가요? 2질문이 yes라면 왜 b에 대입한 타입에따라 결과가 바뀌는지 모르겠습니다.
- 미해결김영한의 실전 자바 - 기본편
equals method
저는 강의를 듣고 문제를 풀다가 이러한 equals 메서드를 보게 되었습니다.제가 생각 하기로는 public boolean equals( Date obj){ } 로 하는게 다운 캐스팅을 할 필요도 없고, 더 편할 것 같은데 특별한 이유가 있나요 ?
- 미해결김영한의 실전 자바 - 기본편
생성자 호출과 스택
public class JavaMemoryMain2 { public static void main(String[] args) { method1(); } static void method1() { Data data1 = new Data(10); method2(data1); } }스택 영역에 main 스택 프레임이 쌓이고, method1() 호출 통해 method1 스택 프레임이 쌓이고 난 후에 new Data(10)에서 생성자를 호출할 때도 스택 영역에 Data 스택 프레임이 쌓이고 생성자 호출이 종료되는 즉시 Data 스택 프레임이 제거되는게 맞을까요? 그니까 method1 스택 프레임이 쌓이고, method2 스택 프레임이 쌓이기 전에 Data 스택 프레임이 쌓이고 제거되는 것이죠. 혹시 이게 맞을까요??
- 미해결김영한의 실전 자바 - 기본편
default 클래스 질문
한 파일에 public이 붙은 클래스는 2개 이상이 아닌 단 1개만 존재할 수 있다는 것은 알겠습니다. 그런데, public이 붙은 클래스가 0개 존재할 수 있는지(= default가 붙은 클래스만 존재함), 실제로 이러한 경우가 실무에서도 존재하는지 질문드립니다.클래스 파일을 만든 후에 public을 제거했더니 문제가 발생하지는 않았습니다. 실무에서도 public이 안 붙은 클래스 파일이 존재하는 경우가 있나요?