JAVA Basic) 인터페이스 - 연습 문제
Programming/Java 기초

JAVA Basic) 인터페이스 - 연습 문제

반응형

 

목차


     

    Q1

    클래스가 인터페이스를 구현하기 위해 사용하는 예약어는 [  ]이다.

    Q2

    클래스가 인터페이스를 구현할 때 인터페이스에 선언한 메서드를 모두 구현하지 않으면 그 클래스는 [  ]가 된다.

    Q3

    인터페이스에 선언한 변수는 컴파일할 때 [  ]로 변환된다.

    Q4

    한 인터페이스를 여러 클래스가 다양한 방식으로 구현한 경우에 프로그램에서 인터페이스에 선언된 메서드를 사용할 때 각 클래스의 구현 내용과 상관없이 도잉ㄹ한 방식으로 사용할 수 있다.
    이렇게 같은 코드가 여러 구현 내용으로 실행되는 객체 지향 특성을 [  ]이라고 한다.

    Q5

    인터페이스에서 구현한 코드를 제공하는 메서드는 [  ] 와 [  ]이다.

    Q6

    한 클래스에서 여러 인터페이스를 구현할 수 있다. [ 예 / 아니오 ]

    Q7

    숫자 정렬 알고리즘에는 여러 정책이 존재한다. 다음 시나리오처럼 인터페이스를 설계하고 인터페이스를 구현한 알고리즘 클래스를 만들자.

    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입니다.");
    	}
    }
    반응형