본문 바로가기
Programming Language/Java

[자바] 인터페이스 - (1) 구현과 다형성

by ggyongi 2021. 10. 26.
반응형

인터페이스란?

추상 메서드와 상수로만 이루어져 있음.

구현 코드가 없기 때문에 당연히 인터페이스로 인스턴스를 생성할 수 없음

그럼 인터페이스는 어떻게 사용하는 것인가?

 

인터페이스를 구현하는 클래스는 implements 예약어를 사용한다. 이때

1. 인터페이스에 포함된 추상 메서드를 구현하거나

2. 이 클래스를 추상 클래스로 만들거나

둘 중에 하나를 택해야 오류가 발생하지 않는다.

 

인터페이스의 형 변환

상속 관계에서 하위 클래스는 상위 클래스 자료형을 묵시적 형 변환을 할 수 있었던 것과 마찬가지로

인터페이스를 구현한 클래스는 인터페이스 형으로 형 변환이 가능

 

인터페이스의 역할

인터페이스를 구현한 클래스가 어떤 기능의 메서드를 제공하는지 명시하는 것입니다.

 

 

인터페이스와 다형성

package first_project;

public interface Scheduler {
	public void getNextCall();
	public void sendCallToAgent();
	
}

 

package first_project;

public class RoundRobin implements Scheduler {

	@Override
	public void getNextCall() {
		System.out.println("상담 전화를 순서대로 대기열에서 가져옴.");
	}

	@Override
	public void sendCallToAgent() {
		System.out.println("다음 순서 상담원에게 배분.");
	}

}

 

package first_project;

public class LeastJob implements Scheduler{

	@Override
	public void getNextCall() {
		System.out.println("상담 전화를 순서대로 가져옵니다.");
	}

	@Override
	public void sendCallToAgent() {
		System.out.println("현재 상담 없무가 없거나 대기가 가장 적은 상담원에게 할당");
	}
}

 

package first_project;

public class PriorityAllocation implements Scheduler {
	@Override
	public void getNextCall() {
		System.out.println("고객 등급이 높은 고객의 전화를 먼저 가져옵니다.");
	}

	@Override
	public void sendCallToAgent() {
		System.out.println("업무 스킬이 높은 상담원에게 우선적으로 배분합니다.");
	}
}

 

package first_project;

import java.io.IOException;

public class SchedulerTest {
	public static void main(String[] args) throws IOException {
		System.out.println("전화 상담 할당 방식을 선택하세요.");
		System.out.println("R : 한명씩 차례로 할당 ");
		System.out.println("L : 쉬고 있거나 대기가 가장 적은 상담원에게 할당 ");
		System.out.println("P : 우선순위가 높은 고객 먼저 할당 ");
		
		int ch = System.in.read();
		Scheduler scheduler = null;
		
		if(ch == 'R' || ch == 'r') {
			scheduler = new RoundRobin();
		}
		else if(ch == 'L' || ch == 'l') {
			scheduler = new LeastJob();
		}
		else if(ch == 'P' || ch == 'p') {
			scheduler = new PriorityAllocation();
		}else {
			System.out.println("지원되지 않는 기능입니다.");
			return;
		}
		
		scheduler.getNextCall();
		scheduler.sendCallToAgent();
	}
}

결과

전화 상담 할당 방식을 선택하세요.
R : 한명씩 차례로 할당 
L : 쉬고 있거나 대기가 가장 적은 상담원에게 할당 
P : 우선순위가 높은 고객 먼저 할당 
p
고객 등급이 높은 고객의 전화를 먼저 가져옵니다.
업무 스킬이 높은 상담원에게 우선적으로 배분합니다.

 

인터페이스를 활용하면 쉽게 확장성 있는 코드를 구현할 수 있다.

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글