php

[php OOP] 3주차(4회차) / php 인터페이스, 특성

namgi 2022. 9. 20. 01:23
반응형

이번 시간에는 인터페이스와 특성에 대해 알아보았다. 


인터페이스

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에 대한 내용을 공부할 것이다.

반응형