이전 걸음에서 abstract class에 대해서 공부를 했습니다. 추상화 된 Method를 가질 수 있는 class이고 나머지는 일반 class와 같다고 했습니다. 하지만 추상화 된 Method가 있으면 스스로 객체를 만들 수 없습니다. 이렇게 abstract class를 공부를 했는데 이번 시간에는 마지막으로 추상화 Method를 가질 수 있는 것을 배워보겠습니다.
추상화 Method를 가질 수 있는 마지막인 interface입니다. interface는 abstract class와 다르게 class라는 단어가 들어가지 않는 것을 생각을 가지고 있으면 공부를 하실 때 도움이 될 수 있습니다. 이번 걸음에서 interface를 함께 공부를 해보겠습니다.
interface 무엇 인지와 interface 관련 예제를 이번 걸음에서 공부를 하도록 하겠습니다. 이번 걸음을 통해서 interface까지 공부를 하면 기초적인 추상화에 대해서 알 수가 있습니다. 기초가 가장 중요하기 때문에 이번 걸음을 통해서 interface를 확실히 이해를 하실 수 있습니다.
interface 란?
interface는 무조건 추상화 된 Method를 가지고 있습니다. 그리고 추가적으로 상수를 가질 수 있습니다. 이런 특성을 가진 interface는 무조건 자식이 될 수 없고 부모로만 사용을 해야 합니다. 그리고 Overriding을 필수적으로 해줘야 합니다.
interface 예제
interface A{
//상수
final int b = 20;
void abc();
int def(int a);
}
class C implements A{
void abc(){ // 메소드 오버라이딩
}
int def(int a){ // 메소드 오버라이딩
return 5;
}
}
public class Test{
public static void main(String[] args){
A a = new A(); // X interface 안됨
A a1 = new C();// 가능
B C = new C(); // 가능
}
}
위 예제 소스를 보면 interface는 무조건 자식은 Overriding을 해서 재 정의를 무조건 해야 합니다. 상속을 할 때는 extends가 아니라 implements를 사용을 합니다. interface는 모든 것이 추상화이기 때문에 Java에서 유일하게 다중 상속이 가능합니다. 이 부분은 추후에 더 이야기를 하겠습니다.