인터페이스란?
추상클래스의 한 종류. 단, 추상메소드와 상수만 가질 수 있다.
상속할 때는 implements 라는 단어를 쓴다.
주로 able이라는 단어로 끝나는 경우가 많다.
예시
인터페이스는 다음과 같이 자신을 상속시켜 활성화할 수 있다.
java
interface libft_able {
abstract int ft_strchr (String s, char c);
abstract int length (String t);
}
// 전체를 활성화시킨 경우
class libft implements libft_able {
int ft_strchr (String s, char c) {
return s.contains(c);
}
int length(String t) {
return String.length();
}
}
일부만 활성화시킬 수도 있는데, 이 때 상속받는 클래스는 추상클래스가 된다.
java
interface libft_able {
abstract int ft_strchr (String s, char c);
abstract int length (String t);
}
// 일부만 활성화시킨 경우
abstract class libft_abst implements libft_able {
int ft_strchr (String s, char c) {
return s.contains(c);
}
}
왜 인터페이스를 쓰는가?
-
개발시간 단축
인터페이스 속 메소드의 내용을 몰라도 미리 개발 가능.
예를 들어 ft_strdup()을 만든다고 가정하면, ft_strlen()을 안 만들어도 그 껍데기만 가지고 일단 설계하고, 나중에 ft_strlen()을 만들면 된다.
-
표준화 가능
프로젝트의 기본 틀을 인터페이스로 짬으로써, 일관된 개발 가능
-
관계 없는 클래스들을 엮기
서로 상속관계도 아니고, 같은 조상클래스를 가지고 있지 않은 경우에도 같은 인터페이스를 사용하게 해, 관계를 맺게 해 줄 수 있다.
-
독립적인 프로그래밍 가능
선언과 구현이 분리되어 있으므로, 한 클래스의 변경이 다른 클래스에 영향을 끼치게 하지 않을 수 있음.