정보처리기사 실기 Java 문제에서 자주 확인하는 상속, 오버라이딩, static, 문자열, 배열, 예외처리를 학습용 재구성 문제로 정리했습니다. 코드를 실행하기 전에 출력값을 종이에 먼저 적어보세요.
상속과 오버라이딩
문제 1
Parent의 print()는 P를, Child가 재정의한 print()는 C를 출력합니다. Parent p = new Child(); p.print();의 출력은 무엇인가요?
정답: C
인스턴스 메서드는 실제 생성된 객체의 재정의 메서드가 호출됩니다. 참조변수 타입이 Parent여도 객체가 Child이므로 C가 출력됩니다.
문제 2
Parent 생성자는 P를 출력하고 Child 생성자는 C를 출력합니다. new Child();를 실행한 결과는 무엇인가요?
정답: PC
자식 객체를 만들 때 부모 생성자가 먼저 실행되고 자식 생성자가 이어서 실행됩니다.
static과 인스턴스
문제 3
class Count { static int n = 0; Count(){ n++; } }에서 Count 객체를 세 개 만들고 Count.n을 출력하면 결과는 무엇인가요?
정답: 3
static 필드는 모든 객체가 하나를 공유합니다.
문제 4
static 메서드에서 this를 사용할 수 있는지 답하세요.
정답: 사용할 수 없습니다.
this는 현재 인스턴스를 가리키지만 static 메서드는 특정 인스턴스 없이 호출될 수 있습니다.
문자열과 배열
문제 5
String a = "java"; String b = new String("java");에서 a == b와 a.equals(b)의 결과를 차례대로 쓰세요.
정답: false, true
==는 참조값을 비교하고 equals는 문자열 내용을 비교합니다.
문제 6
int[] a = {2, 4, 6}; int sum = 0; for(int v : a){ sum += v; } System.out.print(sum);의 출력은 무엇인가요?
정답: 12
향상된 for문이 배열의 각 값을 한 번씩 v에 넣습니다.
다형성과 추상화
문제 7
인터페이스에 선언된 추상 메서드를 구현 클래스가 반드시 재정의해야 하는지 답하세요.
정답: 구현 클래스가 추상 클래스가 아니라면 반드시 재정의해야 합니다.
구현하지 않은 추상 메서드가 남으면 그 클래스도 abstract로 선언해야 합니다.
예외 처리
문제 8
try에서 ArithmeticException이 발생하고 이를 catch가 처리한 뒤 finally가 있다면 실행 순서를 쓰세요.
정답: try 실행 중 예외 발생 → 일치하는 catch 실행 → finally 실행
finally는 일반적으로 예외 발생 여부와 관계없이 실행됩니다. 단, 프로세스가 강제로 종료되는 특수 상황은 제외합니다.
Java 출력 문제 풀이 순서
- 클래스의 상속 관계와 실제 생성 객체를 표시합니다.
- static 필드와 인스턴스 필드를 구분합니다.
- 생성자 호출 순서를 부모부터 적습니다.
- 오버로딩은 매개변수, 오버라이딩은 실제 객체를 기준으로 판단합니다.
- 문자열은 ==와 equals를 구분합니다.
