본문 바로가기
정보처리기사 필답 실기. 코딩 문제.

업캐스팅 문제

by 귀엽소 2025. 5. 8.
반응형

클래스 메인

메인 함수

Ab=newB() //업캐스팅 문제. B() 와 같은 생성자가 있는지 확인하기. 없음. 그 다음줄로 이동.

b.paint()

b.draw()

 

클래스 에이

페인트 함수

드로우 함수

System.out.print("B")

draw() //자식클래스에서 draw 함수를 재정의해놨기 때문에 자식 클래스 draw 실행해야함. 부모꺼 다시하는거 아님.

 

클래스 비 상속 에이

페인트 함수

드로우 함수

System.out.print("D")

 

정답:

BDCDD


클래스 메인

메인함수

Aa=newA() //부모클래스 A() 생성자 찾기.

Ab=newB() //업캐스팅 문제. 자식클래스 B() 생성자 찾기.

 

b.paint()

b.draw()

 

클래스 에이

 

클래스 비 상속 에이

 

정답:

Constructor of A

Constructor of A //자식생성자 B() 하기 전에 부모 생성자 A()먼저 실행해야함...

Constructor of B

BDCDD


클래스 메인

Ab=newB() //업캐스팅 문제. 자식클래스 B() 생성자 찾기.

 

클래스 B 상속 A

B()  // 자식꺼 먼저 하기 전에 A() 찾아서 실행.

b.paint()

b.draw()

 

정답:

Constructor of A //부모 먼저 태어남.

ADCD


클래스 메인

Ab=newB(1) //변수 1을 가지고 있는 B가 등장. 같은 모양새의 B(int i)로 간다는 건 알아. 근데 자식 태어나기 전에 부모가 태어나야해. 부모클래스의 기본생성자인 (매개변수가 없는) A()먼저 간다.

b.paint()

b.draw()

 

클래스 A

 

클래스 B 상속 A

 

정답:

생성자 of A //부모 기본생성자 먼저 실행.

생성자 BB1

CD


메인 함수

Ab=newB(1)

b.paint()

b.draw()

 

클래스 B 상속 A

B(int i) 

super(10) //부모클래스 생성자 먼저 생성하려고 보니까 super(10) 있어서 같은 형태의 A(int i)먼저 실행함.

System.out.println("생성자BB"+i)

 

 

정답:

생성자 of AA10 //부모클래스 생성자 먼저 태어남.

생성자 of BB1 //자식클래스 생성자 태어남. 여기까지가 B(1) 실행해준 것.

CD


메인함수

Ab=newB(1) //매개 변수 1을 가지고 있는 B. B(int i)로 가야하는 건 알아.

b.paint()

b.draw()

 

public B(int i)

System.out.println("생성자BB"+i)

super(10) //부모생성자가 뒷줄에 나오면 우짜야할까..? 일단 자식이 태어나야하니 부모생성자 기본형 A()를 먼저 실행하자. 이렇게 안 한다고 하네요 무조건 오류가 난다고 합니다. super()는 무조건 가장 윗줄에 있어야 한다고 하네요.

 

정답:

 

에러

 

생성자 of A

생성자 BB1

생성자 of AA10

CD


<<틀리기 쉬운 문제>>

메인함수

Ab=newB(1)

b.paint()

b.draw()

b.specialDraw() //클래스 B만 가지고 있는 함수임.

 

정답:

 

에러

 

생성자 of AA10

생성자 BB1

CDD //오류가 남. 부모도 함께 가지고 있는 함수를 써야하기 때문임. 부모 함수를 재정의 한 게 아니고 자식만 가지고 있는 함수임.

 

반응형

댓글