안녕하세요! 선생님 인강을 열심히 보고 있는 직딩입니닷..
열심히 듣고 있던 중에 java에서 멘붕이 왔어요..
생성자와 메서드, 상속과 생성자 호출 순서.. 강의를 보면서 보고 있는데 보고 있어도 감이 잡히질 않습니다...ㅠㅠ
어떻게 해야 될까요?ㅠㅠ 말도 저한테는 좀 빨라서 속도도 느리게 해서 듣고 있는데도... 모르는 게 많은지 어렵습니다.
상속과 생성자 호출 순서 예시 중에 "생성자가 있으면 어떻게 될까?"에 답이 왜 이렇게 나오는지... 왜
부모의 답인 Car()과 자식의 답인 ElectricCar()의 답이 main 중 어느 코드에 의해서... 저런 답이 나왔을까요?ㅠㅠ
무엇을 어찌 해야 이해가 될까요?ㅠㅠ
제가 조금 더 천천히 설명했어야 했는데, 송구합니다.
혹시 영상에서 몇 분 몇 초 대일까요? 다시 설명드리도록 하겠습니다.
답글
아닙니다 제가 이해를 잘 못해서 그래요!
생성자가 있으면 어떻게 될까? 강의 7:05에 보면
답변에 Car constructor 다음 줄에 ElectricCar constructor 답변은 어디 명령어에 의해서 해당 값이 나왔는지 모르겠습니다..
만약 super가 없다면? 10:38에 보면
답이 Car() ECar(75)로 되어 있는데
자식 클래스가 탄생하기 전에 부모 클래스의 기본 생성자 호출이 필요하다고 하셨는데
생성자가 있으면 어떻게 될까의 예시의 답변과
만약 super가 없다면의 예시 답변이 같은 맥락으로 나와야 될 거 같은데 다른 이유가 궁금합니다..!
자식 클래스에 파라미터값이 들어가 있어서
ECar()은 프린터가 되지 않는 게 맞나요??
답글
주말코딩
2024.07.20아, 제가 여기 답변을 못 달았네요. 질문 게시판에 올려주셔야 제가 바로 볼 수 있습니다 😅
첫 번째 질문
지금 보시면 애초에 객체 생성 자체가 자식을 부릅니다.
ElectricCar eCar = new ElectricCar();
new 뒤에 있는 단어가 어떤 생성자를 부를 것인지를 뜻하는 것입니다. 괄호 안이 비어있죠? 그것은 기본 생성자(파라미터가 없는)를 불러오라는 것입니다.
지금 파라미터가 없는 자식이 태어나려고 하는데, 부모가 있습니다. 무조건 부모의 기본생성자는 부르는 것이 Java 언어의 원칙입니다.
그래서 Car constructor를 호출한 것입니다. 그 뒤에 자식 태어나려다가 말았잖아요? 계속 진행해야죠.
그래서 그 다음에 내가 태어나는 것입니다. (ElectricCar constructor 출력)
두 번째 질문
네, 맞습니다.
지금 new 뒤에 괄호 안에 매개변수 3개나 있죠.
3개짜리를 부릅니다. ( 생성자 부를 때 갯수만 보시면 안됩니다. 변수의 자료형도 다 보셔야 돼요. )
그래서 자식(본인)의 기본 생성자는 부르지 않습니다.
이해에 도움이 되셨을까요?
harins0201
2024.07.21넵 도움이 됐습니다! 감사합니다!!