PHP OOP - 인터페이스
PHP - 인터페이스란?
인터페이스를 사용하면 클래스에서 구현해야 하는 메서드를 지정할 수 있습니다.
인터페이스를 사용하면 다양한 클래스를 같은 방식으로 쉽게 사용할 수 있습니다. 하나 이상의 클래스가 동일한 인터페이스를 사용하는 경우 이를 "다형성"이라고 합니다.
인터페이스는 interface
키워드로 선언됩니다.
통사론
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function
someMethod3() : string;
}
?>
PHP - 인터페이스 대 추상 클래스
인터페이스는 추상 클래스와 유사합니다. 인터페이스와 추상 클래스의 차이점은 다음과 같습니다.
- 인터페이스는 속성을 가질 수 없지만 추상 클래스는 속성을 가질 수 있습니다.
- 모든 인터페이스 메소드는 public이어야 하지만 추상 클래스 메소드는 public 또는 protected입니다.
- 인터페이스의 모든 메소드는 추상적이므로 코드로 구현할 수 없으며 추상 키워드가 필요하지 않습니다.
- 클래스는 동시에 다른 클래스에서 상속하면서 인터페이스를 구현할 수 있습니다.
PHP - 인터페이스 사용
implements
인터페이스를 구현하려면 클래스에서 키워드 를 사용해야 합니다 .
인터페이스를 구현하는 클래스는 인터페이스의 모든 메서드를 구현해야 합니다.
예시
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
위의 예에서 동물 그룹을 관리하는 소프트웨어를 작성하려고 한다고 가정해 보겠습니다. 모든 동물이 할 수 있는 행동이 있지만 각 동물은 저마다의 방식으로 행동합니다.
인터페이스를 사용하여 각 동물이 다르게 행동하더라도 모든 동물에 대해 작동할 수 있는 몇 가지 코드를 작성할 수 있습니다.
예시
<?php
// Interface definition
interface Animal {
public
function makeSound();
}
// Class definitions
class Cat
implements Animal {
public function makeSound() {
echo " Meow ";
}
}
class Dog implements Animal {
public function makeSound()
{
echo " Bark ";
}
}
class Mouse implements Animal {
public function makeSound() {
echo " Squeak ";
}
}
// Create a list
of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new
Mouse();
$animals = array($cat, $dog, $mouse);
// Tell the animals
to make a sound
foreach($animals as $animal) {
$animal->makeSound();
}
?>
예시 설명
makeSound()
Cat, Dog, Mouse는 모두 Animal 인터페이스를 구현하는 클래스입니다. 즉, 이 메서드 를 사용하여 모두 소리를 낼 수 있습니다 . 이 때문에 우리는 각 동물이 어떤 종류의 동물인지 알지 못하더라도 모든 동물을 반복하여 소리를 내라고 말할 수 있습니다.
인터페이스는 클래스에 메서드 구현 방법을 알려주지 않기 때문에 각 동물은 고유한 방식으로 소리를 낼 수 있습니다.