IT/JAVA

능력단위평가 - 자바 총 정리 테스트 오답노트

_KH_ 2025. 2. 17. 17:49

[ 4번 문제 ]

에러가 발생하는 라인은 7번이다.

왜냐하면 제네릭 설정을 하지 않았기 때문에 

for(int v : datas)

가 아니고, 

for(Object v : datas)

가 되어야 한다.

 

단, 에러는 7번 라인에서 발생하지만

2번 라인 ArrayList에 제네릭을 붙여주면 에러가 해결된다.


[ 7번 문제 ]

C 클래스에 new 연산자를 통해 c라는 객체를 생성한다.

C() 생성자를 따라 C 클래스로 올라가면,  C클래스의 기본 생성자에서는 super("멍멍");을 가리키고 있다.

이때, "멍멍"은 문자열이므로 상속 받고 있는 B 클래스의 인자 있는 생성자로 올라가야 한다.

B(String msg)로 올라가면 또 super(msg)를 만날 수 있는데, B클래스는 A클래스를 상속받고 있으므로 A(String msg)로 올라가면 인자로 들어온 msg를 그대로 출력하도록 하고 있다.

 

따라서 답은 3번 멍멍이다.


[Q3] 

num의 값이 123으로 유지되는 이유는 call by value , 즉 값에 의한 참조 때문이다.

문제에서 A 클래스의 num과 main함수의 num은 다른 값을 가진다.

Call by Reference의 경우 값의 주소를 참조하기 때문에 직접 값에 영향을 주지만 

위 문제처럼 Call by Value의 경우에는 변수의 복사본이 전달되기 때문에 원래 값이 수정되지 않고, 각자 다른 메모리 위치에 생성되어 다른 값을 가진다.


[ Q7 ] 생성자의 역할

"객체 초기화"가 아닌 "멤버 변수 초기화"

생성자는 객체 생성 시 호출되어 멤버변수를 초기화 해주는 역할을 한다.


[ Q9 ]

기본 생성자가 없는 것은 맞지만 에러를 해결하는 방법이 기본 생성자를 생성하는 것이 아니다.

그냥 부모에게 있는 생성자를 사용하면 된다.

부모 클래스에 기본 생성자를 새로 생성하는 것은 설계 변경에 해당할 수 있기 때문에 설계 변경 없이 에러를 해결하는 가장 좋은 방법은 자식 클래스에서 부모 클래스의 생성자를 사용하는 것이다.


+ )) NullPointerException 에러 원인 : "주어가 없어서"!!!

'IT > JAVA' 카테고리의 다른 글

JDBC + MYSQL 연동  (1) 2025.02.21
JSP  (0) 2025.02.21
생성자  (0) 2025.02.17
MVC 프로젝트 - 도서관 프로그램(VIEW 코드)  (1) 2025.02.11
자바 복습  (0) 2025.02.11