인터페이스(Interface)
- 인터페이스는 클래스와 유사하지만 정의되지 않은 함수들만 가질 수 있는 것이 특징
- 인터페이스를 상속받는 클래스는 implements 키워드를 사용한다
- 참고로 함수를 정의할때는 function mockFunction();
이런식으로만 상용하고 정의를 하지 않는다.
- 또한 당연히 인터페이스는 객체(인스턴스)를 만들 수 없다.
(인터페이스는 실객체가 아니다 : 기능 스펙을 모아 명세해놓기만 한것)
- 다른 클래스 간에 공통적인 기능을 정의할 때 인터페이스 사용
- 인터페이스 내부에 공통기능을 선언하고 하위 클래스에 인터페이스 내에서 선언된 메소들을 구현
+) 추가 설명
보통 상속받는 클래스의 몇가지 필수 기능(함수)를 정의하기 위해 사용
즉, 이 기능은 반드시 만들어야한다라고 규정하는 일종의 규칙을 정의하는 것이다.
(어떤 기능을 세부적으로 정의하지는 않지만 이러한 기능이 필요 할 것이다라고 정의하는 방식)
인터페이스 이점
- 다른 객체 지향 언어를 공부할 때 편리
- 좀 더 유연한 프로그램 만들 수 있음
- 웹이나 프레임 워크를 이해하는데 도움이 됨
ex)
interface Translate { //인터페이스 정의부분
function Korean();
function English();
}
class Greeting Implements Translate {
function Korea() {
echo "안녕하세요"; //인터페이스로 정의한 부분을 실체화하는 부분
}
function English() {
echo "Hello";
}
}
class Fruit Implement Translate {
function Korea() {
echo "사과";
}
function English() {
echo "apple";
}
}
$trans1 = new Greeting();
$trans2 = new Fruit();
$tran1->Korean(); //안녕하세요
$tran1->English(); //Hello
$tran2->Korean(); //사과
$tran2->English(); //apple