10) 인터페이스란?
인터페이스란?
구현 코드가 없는 인터페이스! 인터페이스는 추상 메서드와 상수로만 이루어져 있다. 때문에 인스턴스를 생성할 수도 없다.
public interface Calc {
double PI = 3.14;
int ERROR = -99999999;
int add(int num1, int num2);
int substract(int num1, int num2);
int times(int num1, int num2);
int divide(int num1, int num2);
}
위 예제 코드에서 변수는 상수로 자동 변환되고, 선언한 메서드는 추상 메서드로 변환된다.
클래스에서 인터페이스 구현하기
인터페이스를 클래스가 사용하는 것을 implements예약어로 사용한다.
ex) public class Calculator implements Calc
이 때, Calculator클래스는 추상 메서드 4개를 구현하거나, 추상 클래스로 만들어야 한다.
인터페이스의 역할
인터페이스를 구현한 클래스가 어떤 기능의 메서드를 제공하는지 명시하는 것.
인터페이스를 사용하면 다형성을 구현하여 확장성 있는 프로그램을 만들 수 있습니다.
인터페이스 디폴트 메서드와 정적 메서드
자바 8부터는 디폴트 메서드와 정적 메서드 기능을 제공
디폴트 메서드 : 인터페이스에서 구현 코드까지 작성한 메서드 (여러 클래스에서 사용할 메서드가 기능이 같을 경우 활용)
public interface Calc{
....
default void description() {
...
}
}
디폴트 메서드를 선언할 땐 default 예약어를 사용. 최종 하위 클래스에서 재정의(Override)도 가능
정적 메서드 : 인스턴스 생성과 상관없이 사용할 수 있는 메서드
public interface Calc{
...
static int total(int[] arr){
...
}
}
정적 메서드는 static 예약어를 사용. 사용시에는 인터페이스 이름으로 직접 참조하며 사용.
private 메서드
자바 9부터 인터페이스에 private 메서드를 구현할 수 있다. private 메서드는 인터페이스를 구현한 클래스에서 사용하거나 재정의할 수 없다. private 메서드는 코드를 구현해야하므로 추상 메서드에 private 예약어를 사용할 수는 없지만, static예약어는 함께 사용할 수 있다.
한 클래스가 여러 인터페이스를 구현하는 경우
public class Customer implements Buy, Sell {
다만 Buy와 Sell의 두 인터페이스에 이름이 같은 디폴트 메서드가 있으면 문제가 됨. 구현하는 클래스에서 다시 재정의 해줘야 한다. 그리고 가상 메서드 원리에 의해 재정의한 메서드가 호출된다.
인터페이스 상속하기
인터페이스 간에도 상속이 가능. 인터페이스 간 상속은 구현 코드를 통해 기능을 상속하는 것이 아니므로 형 상속이라고 부른다.
public interface MyInterface extends X, Y {
상속할 때 extends 예약어를 그대로 사용한다.
public class MyClass implements MyInterface {
위의 MyClass는 MyInterface안의 추상 클래스와 더불어 X, Y의 추상 클래스까지 구현해야 한다.
'개발 > Java' 카테고리의 다른 글
Java] Do it 자바 프로그래밍 입문 요약 (셋째마당 - 12) (0) | 2019.06.18 |
---|---|
Java] Do it 자바 프로그래밍 입문 요약 (셋째마당 - 11) (0) | 2019.06.18 |
Java] Do it 자바 프로그래밍 입문 요약 (둘째마당 - 09) (0) | 2019.06.16 |
Java] Do it 자바 프로그래밍 입문 요약 (둘째마당 - 08) (0) | 2019.06.16 |
Java] Do it 자바 프로그래밍 입문 요약 (둘째마당 - 07) (0) | 2019.06.14 |