인터페이스1

1. 인터페이스

  • 모든 메서드가 추상 메서드로 이루어진 클래스

=> 형식적인 선언만 있고 구현은 없음

  • 모든 메서드는 public abstract가 붙어 추상 메서드가 됨
  • 모든 변수는 public static final이 붙어 상수가 됨

  • 예시
public interface Calc {
	//상수
	double PI = 3.14;
	int ERROR = -999999999;
	
	//추상 메서드
	int add(int num1, int num2);
	int substract(int num1, int num2);
	int times(int num1, int num2);
	int divide(int num1, int num2);
}
public abstract class Calculator implements Calc { //인터페이스의 일부 메서드만 구현했으므로 추상 클래스로 선언
	
	@Override
	public int add(int num1, int num2) {
		return num1 + num2;
	}

	@Override
	public int substract(int num1, int num2) {
		return num1 - num2;
	}
	
}
public class CompleteCalc extends Calculator {

	@Override
	public int times(int num1, int num2) {
		return num1 * num2;
	}

	@Override
	public int divide(int num1, int num2) {
		if(num2 != 0) {
			return num1 / num2;
		}
		return ERROR;
	}
	
	public void showInfo() {
		System.out.println("Calc 인터페이스를 구현하였습니다.");
	}

}
public class CalculatorTest {
	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 2;
		
		Calc calc = new CompleteCalc();
		
		System.out.println(calc.add(num1, num2)); //12출력
		
		//Calc inter = new Calc(); //인터페이스는 인스턴스 생성 불가
		//Calculator abstr = new Calculator(); //추상 클래스는 인스턴스 생성 불가
		//calc.showInfo() //Calc타입에 선언되지 않은 메서드라서 사용 불가(다운 캐스팅 필요)
	}
}

2. 인터페이스 구현과 형 변환

  • 인터페이스를 구현(implements)한 클래스는 인터페이스 형으로 형 변환할 수 있음

=> 상속에서 하위 클래스가 상위 클래스로 형변환 할 수 있는 것과 동일

  • 상속과 달리 구현코드가 없기 때문에 여러 인터페이스를 구현할 수 있음

=> 자바는 단일 상속만 지원한다

  • 형 변환시 사용할 수 있는 메서드는 인터페이스에 선언된 메서드만 사용할 수 있음

태그:

카테고리:

업데이트: