해결된 질문
작성
·
37
답변 3
0
안녕하세요, 우선 명시적 호출 / 암시적 호출은 생성자에만 사용하는 것입니다.
paint는 메서드로 명시적 호출이라는 단어를 쓰지 않습니다. 메서드는 다 명시적 호출입니다.
부르면 그냥 사용되죠.
부모 생성자는 그냥 무조건 불립니다. 다만 기본생성자가 없을 때는 아무 내용이 없으니까 생략되는 것처럼 보일 뿐입니다. 내용이 없으니까 아무 것도 실행되지 않는 것처럼 보이는 것이죠.
super.paint()는 지금 불린 겁니다. 그러니까 A가 출력이 된 것입니다.
그 다음에 그 안에 있는 draw()가 자식 것으로 가서 D가 출력된 것이죠.
두 번째 줄의 ADCD에 가장 첫 A가 부모에 있는 paint가 실행된 것입니다.
0
명시적 호출이 되는 부분과 부모-자식 기본생성자가 호출되는 경우를 나눠보니 아래와 같은데
두 문장의 어떤 차이점이 있을까요?
명시적 호출이 되는 경우
class B extends A
public void paint()
super.draw()
부모-자식 기본생성자가 호출되는경우
class B extends A
public B()
super,.paint()
0
저는 밑단에 super가 있어서 명시적 호출이라고 생각했는데 아니더군요.
명시적 호출과 기본 생성자를 구분하는 방법은 super라고 생각했는데 윗단의 메서드나 void 등 더 명확하게 구분할 수 있는 요소가 있을까요?
말씀하시는 명시적 호출이라는 단어를 어디에 쓰고 계신지 모르겠습니다.
메서드는 명시적 호출이라는 것이 없는데, 어떤 것이 실행되는 것을 질문하신 걸까요?
출력값으로 말씀해주시면 답변드리기 수월합니다. 대댓글 부탁드립니다.