프로그래밍에서 특정 기능이나 동작을 약속하고 명세하는(구체적인 구현X) 역할을 한다.
특징
추상화
: 인터페이스는 메서드의 선언만을 포함하며 구체적인 구현 포함X.
이를 통해 다양한 객체들이 동일한 인터페이스를 구현하면서도 각 객체 특성에 맞는 방식으로 method 구현 가능.
다형성
interface Animal {
void speak();
}
class Dog implements Animal {
@Override
public void speak() { // 다형성 예시
System.out.println("멍멍");
}
}
class Cat implements Animal {
@Override
public void speak() { // 다형성 예시
System.out.println("야옹");
}
}
public class Main {
public static void main(String[] args) {
Animal a1 = new Dog();
Animal a2 = new Cat();
a1.speak(); // 멍멍
a2.speak(); // 야옹
}
}
위 코드에서 Cat과 Dog의 speak
method는 다형성의 예시이다.
즉, 인터페이스에서 여러 클래스의 객체는 인터페이스의 타입으로 구현되면서 다형성을 띌 수 있다.
1) 구현
- 인터페이스는 method의 명세만 제공한다.
무슨 말이냐? 이 method들이 어떤 행동을 해야하는지만 제시할 뿐, 구체적인 구현 내용은 포함하지 않는다.
- 추상클래스는 일부 method는 구현되어 있을 수 있고, 일부 method는 추상 method로 남겨져 있을 수도 있다.
즉, 추상 클래스를 상속 받는 자식 클래스는 이미 구현된 method는 재정의해서 사용할 수도 있지만, 재정의 하지 않고 사용할 수 있다.