업캐스팅 강의 5분대 내용입니다.
바로 이전 강의에서는
자식이 부모에게 없는 것을 호출이 가능하였는데
이번 강의에서는 chargeBattery 부분이 없어서 에러가 발생한다고 하셨습니다.
에러가 나오는건 '업캐스팅' 일 때만 나오는 걸까요?
답변 1
0
안녕하세요,
답변은 좀 애매한데, 맞으면서도 아닙니다.
(Only 부모로 만들었는데 자식을 호출하면 에러가 발생함)
업캐스팅 형태에서 저렇게 나오면 헷갈리실까봐 특별히 짚어드린 것입니다.
다른 형태에서는 저럴 이유가 없습니다.
부모 형태 = new 부모생성자();
자식 형태 = new 자식생성자();
이렇게 되는 경우에서는 헷갈릴게 없으니까요.
저기에서 만약에 부모 형태로 만들었는데 자식 메서드를 접근하면? 당연히 본인 필드가 아니니까 오류가 납니다.
자식에서는 부모를 아예 명시적(super)으로 부를 수 있었죠?
감사합니다.
업캐스팅은 전체적으로는 부모의 느낌이나, 자식을 갈아끼울 수 있는 형태라고 생각하시면 좋습니다.
0
상속과 생성자 호출순서에서 3분대의 bark는 본인 자체가 자식이어서 그렇습니다.
위에 보시면 Animal이 아니라 Dog dog = new Dog(); 입니다.
형태: Dog (자식)
변수명: dog (소문자)
new: 새로운 메모리 크기를 할당해서 객체를 생성하라는 키워드
Dog(): 매개변수 없는 Dog 클래스의 생성자 (기본 생성자라고도 불림)
그냥 자식 그 자체입니다. (업캐스팅도, 부모 그자체도 아님)
여기서 부모인 super class는 Animal입니다.
현실에서 비유하자면
부모에게서 자식이 자전거와 컴퓨터를 받았는데, 자식이 열심히 일해서 자동차를 산 것이지요.
자전거와 컴퓨터야 부모에게서 물려받았지만 내가 재정의(수리하거나 부품을 바꿔낌)하면 되는데
자동차는 내가 내돈으로 샀으니 그냥 내꺼입니다. (오로지 자식의 소유)
그래서 자동차는 사용할 수 있습니다.
그런데 부모 형태로 만들었다고 생각하면 어떨까요?(부모클래스명 변수명 = new 부모생성자();)
부모는 애초에 자동차가 어떻게 생긴지도 모릅니다. 평생 자전거와 컴퓨터만 봤으니까요.
그래서 실행할 수 없습니다.
정처기 2026-3 실기 문의
0
84
2
정처기 실기 3회 컴싸 사용 여부
0
52
1
모의고사 1 회 2번문제 중
0
71
2
26-2 이론문제 재탕
1
53
1
26-2년도 코드문제
0
36
0
26-2 코드문제
0
43
1
15분 48초 질문
0
57
2
26-1년도 이론문제 재탕
0
64
1
26-1년도 코드문제 재탕
0
44
0
이론재탕만 눈치챘어도
0
72
1
25-3년도 이론문제 재탕
0
57
1
25-3년도 코드문제 재탕
0
41
0
출력값 문의
0
53
2
25-2 분기커버리지
0
47
0
25-2 이론 재탕
0
66
1
25-1 이론 재탕
0
53
1
서브넷 마스크
0
52
2
모의고사 1회 계산문제 2개 맞았는데
0
68
2
업캐스팅 문제 예시 4번 부모 호출
0
51
2
모의고사 자료 해설이 너무 불친절하네요.
0
95
2
부모의 생성자 출력 관련
0
48
2
24-3 이론파트 재탕문제
0
57
0
누락코드
0
45
1
다차원 배열 포인터 질문있습니다
0
71
3





