728x90
목차
Q1
클래스가 인터페이스를 구현하기 위해 사용하는 예약어는 [ ]이다.
Q2
클래스가 인터페이스를 구현할 때 인터페이스에 선언한 메서드를 모두 구현하지 않으면 그 클래스는 [ ]가 된다.
Q3
인터페이스에 선언한 변수는 컴파일할 때 [ ]로 변환된다.
Q4
한 인터페이스를 여러 클래스가 다양한 방식으로 구현한 경우에 프로그램에서 인터페이스에 선언된 메서드를 사용할 때 각 클래스의 구현 내용과 상관없이 도잉ㄹ한 방식으로 사용할 수 있다.
이렇게 같은 코드가 여러 구현 내용으로 실행되는 객체 지향 특성을 [ ]이라고 한다.
Q5
인터페이스에서 구현한 코드를 제공하는 메서드는 [ ] 와 [ ]이다.
Q6
한 클래스에서 여러 인터페이스를 구현할 수 있다. [ 예 / 아니오 ]
Q7
숫자 정렬 알고리즘에는 여러 정책이 존재한다. 다음 시나리오처럼 인터페이스를 설계하고 인터페이스를 구현한 알고리즘 클래스를 만들자.
실행 파일 코드가 다음과 같을 때 인터페이스와 클래스를 만들어 완성하세요.
package practiceQ7;
import java.io.IOException;
public class SortTest {
public static void main(String[] args) throws IOException {
System.out.println("정렬 방식을 선택하세요.");
System.out.println("B : BubbleSort");
System.out.println("H : HeapSort");
System.out.println("Q : QuickSort");
int ch = System.in.read();
Sort sort = null;
if(ch == 'B' || ch == 'b') {
sort = new BubbleSort();
}
if(ch == 'H' || ch == 'h') {
sort = new HeapSort();
}
if(ch == 'Q' || ch == 'q') {
sort = new QuickSort();
}
else {
System.out.println("지원하지 않는 기능입니다.");
return;
}
// 정렬 방식과 상관없이 Sort에 선언된 메서드 호출
int[] arr = new int[10];
sort.ascending(arr);
sort.descending(arr);
sort.description();
}
}
정답:
Q1: implements 예약어
Q2: 추상 클래스
Q3: 상수
Q4: 다형성
Q5: 디폴트 메서드 / 정적 메서드
Q6: 예
Q7:
-Sort 인터페이스
package practiceQ7;
public interface Sort {
void ascending(int[] arr);
void descending(int[] arr);
default void description() {
System.out.println("숫자를 정렬하는 알고리즘입니다.");
}
}
-하위 클래스(QuickSort 클래스만)
package practiceQ7;
public class QuickSort implements Sort {
@Override
public void ascending(int[] arr) {
System.out.println("QuickSort ascending");
}
@Override
public void descending(int[] arr) {
System.out.println("QuickSort descending");
}
@Override
public void description() {
Sort.super.description();
System.out.println("QuickSort입니다.");
}
}
300x250