해결된 질문
작성
·
112
·
수정됨
0
업캐스팅 문제 예시 8.
자식 클래스에만 있는메서드를 호출하면? 관련입니다.
A b = new B(1);
b.paint();
b.draw();
b.specialDraw(); ← 여기가 오류가 난다는 건 이해했습니다.
또한, 이 문제 정답 관련해서
정답:에러
error: cannot find symbol
라고 적혀있는 것은 확인했습니다.
그런데, b.specialDraw(); 부분 이전까지는 정상적으로 작동을 하니까
생성자 of AA10
생성자 BB1
CD까지는 출력이 되어야 하는게 아닌가 궁금합니다.
아니면 b.specialDraw(); 부분 오류 때문에
error: cannot find symbol로만 출력되는건지 궁금합니다.
답변 1
1
아, 그렇게 생각하실 수도 있겠네요.
프로그램에서 오류가 발생할 때는 크게 2가지로 구별합니다.
첫번째는 컴파일 오류고, 두번째는 런타임 오류입니다.
컴파일 오류라는 것은 소스코드를 실행해보려고 싹~ 훑어봤는데 아예 문법적으로 이상이 있는 것입니다. 이 경우에는 아예 오류가 발생합니다.
말씀하신 것처럼 중간에 에러가 나려면, 문법적으로는 다 괜찮고 좋은데 프로그램이 실행되다가 뭔가 이상이 생기는 것입니다. 그럴 때는 앞처럼 정상 수행되었던 것은 보이는 경우가 있습니다.
해당 예시는 아예 실행할 때 오류가 납니다.
단, 시험에서는 어디서 오류가 발생하는가? 라고 물어볼 수 있으니까 몇 번째 줄이 이상한 건지는 알고 계셔야겠죠.