[php OOP] 3주차(4회차) / php 인터페이스, 특성
이번 시간에는 인터페이스와 특성에 대해 알아보았다.
인터페이스
php 인터페이스란? - 인터페이스를 이용하면 클래스에서 구현해야 하는 메서드를 정할 수 있다.
인터페이스를 사용하면 클래스와 달리 여러 개를 상속할 수 있다.
인터페이스를 상속받고 메서드를 사용하지 않으면 에러가 발생한다.
<html>
<head>
<h1>동물 사운드</h1>
<?php
// 인터페이스를 'Animal'로 정의
interface Animal {
//'Sounds' 함수 정의
public function Sounds();
}
//'Cat' 클래스를 'Animal'인터페이스로 상속
class Cat implements Animal {
public function Sounds() {
echo "고양이: 야옹<br>";
}
}
//'Dog' 클래스를 'Animal'인터페이스로 상속
class Dog implements Animal {
public function Sounds() {
echo "강아지: 왈<br>";
}
}
//'Owl' 클래스를 'Animal'인터페이스로 상속
class Owl implements Animal {
public function Sounds() {
echo "부엉이: 부엉<br>";
}
}
//동물 변수 생성, 목록 생성
$cat = new Cat();
$dog = new Dog();
$owl = new Owl();
$animals = array($cat, $dog, $owl);
//동물들의 소리를 출력해줌
foreach($animals as $animal) {
$animal->Sounds();
}
?>
</head>
</html>
인터페이스는 'interface' 코드로 사용할 수 있다.
위 코드에서 'implements'는 인터페이스를 상속하는 코드로,
14번 째 줄의 'class Cat implements Animal {' 코드는
'Cat' 클래스를 앞서 지정한 'Animal' 인터페이스로 상속한다는 코드이다.
위 코드는 동물들의 소리를 알려주는 것으로,
실행결과는 다음과 같다.
특성
특성이란? - 특성은 여러 클래스에서 사용할 수 있는 메서드를 선언하는 데 사용된다.
더 자세한 내용: https://www.w3schools.com/php/php_oop_traits.asp
<?php
//'msg1' 특성 선언
trait msg1 {
//'hello'함수의 명령 설정
public function hello() {
echo "안녕하세요. ";
}
}
//'msg2' 특성을 선언하고,
trait msg2 {
//'hello2'함수의 명령을 설정
public function hello2() {
echo "제 이름은 namgi 입니다.";
}
}
//'Introduce'클래스를 선언,
class Introduce {
//클래스에서 'hello' 특성 사용
use msg1;
}
//Introduce2' 클래스 선언,
class Introduce2 {
//클래스에서 'msg1'와 'msg2' 특성 사용 / 여러 특성은 콤마로 구분
use msg1, msg2;
}
$obj = new Introduce();
$obj->hello();
echo "<br>";
$obj2 = new Introduce2();
$obj2->hello();
$obj2->hello2();
?>
특성은 'trait' 코드로 사용할 수 있다.
클래스에서 특성을 사용하려면,
24번 째 줄 처럼 'use' 코드를 이용하여 사용할 수 있다.
31번 째 줄 처럼 특성은 '콤마( , )'로 여러 개를 구분할 수 있다.
위 코드는 'msg1', 'msg2' 두 가지 특성을 선언한다.
그 후 'Introduce', 'Introduce2'라는 두 개의 클래스를 만든다.
'Introduce' 클래스는 'msg1' 특성을 사용하고,
'Introduce2' 클래스는 'msg2' 특성을 사용한다.
실행 결과는 다음과 같다.
이번 회차에선 인터페이스와 특성에 대해 알아보았다.
다음 회차에서도 OOP에 대한 내용을 공부할 것이다.