インターフェイス(オブジェクト・インターフェイス)は、複数のインターフェイスを継承できる。extends
演算子のあとに、複数のインターフェイスを、カンマで区切りで指定する。
書式
interface インターフェイスA // インターフェイスを定義
{
public function メソッドA(); // あるクラスが実装する必要があるメソッドを宣言
}
interface インターフェイスB // インターフェイスを定義
{
public function メソッドB(); // あるクラスが実装する必要があるメソッドを宣言
}
interface インターフェイスC extends インターフェイスA, インターフェイスB // 複数のインターフェイスを継承し、インターフェイスCを定義
{
public function メソッドC(); // あるクラスが実装する必要があるメソッドを宣言
}
class クラスA implements インターフェイスA // クラスを定義
{
public function メソッドA() { // 実装する必要があるメソッドAを定義
// メソッド内処理文;
}
}
class クラスB implements インターフェイスC // クラスを定義
{
public function メソッドA() { // 実装する必要があるメソッドAを定義
// メソッド内処理文;
}
public function メソッドB() { // 実装する必要があるメソッドBを定義
// メソッド内処理文;
}
public function メソッドC() { // 実装する必要があるメソッドCを定義
// メソッド内処理文;
}
}
{
public function メソッドA(); // あるクラスが実装する必要があるメソッドを宣言
}
interface インターフェイスB // インターフェイスを定義
{
public function メソッドB(); // あるクラスが実装する必要があるメソッドを宣言
}
interface インターフェイスC extends インターフェイスA, インターフェイスB // 複数のインターフェイスを継承し、インターフェイスCを定義
{
public function メソッドC(); // あるクラスが実装する必要があるメソッドを宣言
}
class クラスA implements インターフェイスA // クラスを定義
{
public function メソッドA() { // 実装する必要があるメソッドAを定義
// メソッド内処理文;
}
}
class クラスB implements インターフェイスC // クラスを定義
{
public function メソッドA() { // 実装する必要があるメソッドAを定義
// メソッド内処理文;
}
public function メソッドB() { // 実装する必要があるメソッドBを定義
// メソッド内処理文;
}
public function メソッドC() { // 実装する必要があるメソッドCを定義
// メソッド内処理文;
}
}
サンプル
<?php
interface taxInterfaceA
{
public function func_tax( $var );
}
interface taxInterfaceB
{
public function func_echoA( $var );
}
interface taxInterfaceC extends taxInterfaceA, taxInterfaceB
{
public function func_echoB( $var );
}
class taxClass5 implements taxInterfaceC
{
public $varTax = 0.05;
public function func_tax( $var ) {
return $var * ( 1 + $this->varTax );
}
public function func_echoA( $var ) {
echo '税込:' . $this->func_tax( $var ) . '円<br />';
}
public function func_echoB( $var ) {
echo '税率:' . $this->varTax * 100 . '%<br /><br />';
}
}
class taxClass7 implements taxInterfaceC
{
public $varTax = 0.07;
public function func_tax( $var ) {
return $var * ( 1 + $this->varTax );
}
public function func_echoA( $var ) {
echo '税込:' . $this->func_tax( $var ) . '円<br />';
}
public function func_echoB( $var ) {
echo '税率:' . $this->varTax * 100 . '%<br /><br />';
}
}
$var_class = new taxClass5();
$var_class->func_echoA( 100 );
$var_class->func_echoB( 100 );
$var_class = new taxClass7();
$var_class->func_echoA( 100 );
$var_class->func_echoB( 100 );
?>
interface taxInterfaceA
{
public function func_tax( $var );
}
interface taxInterfaceB
{
public function func_echoA( $var );
}
interface taxInterfaceC extends taxInterfaceA, taxInterfaceB
{
public function func_echoB( $var );
}
class taxClass5 implements taxInterfaceC
{
public $varTax = 0.05;
public function func_tax( $var ) {
return $var * ( 1 + $this->varTax );
}
public function func_echoA( $var ) {
echo '税込:' . $this->func_tax( $var ) . '円<br />';
}
public function func_echoB( $var ) {
echo '税率:' . $this->varTax * 100 . '%<br /><br />';
}
}
class taxClass7 implements taxInterfaceC
{
public $varTax = 0.07;
public function func_tax( $var ) {
return $var * ( 1 + $this->varTax );
}
public function func_echoA( $var ) {
echo '税込:' . $this->func_tax( $var ) . '円<br />';
}
public function func_echoB( $var ) {
echo '税率:' . $this->varTax * 100 . '%<br /><br />';
}
}
$var_class = new taxClass5();
$var_class->func_echoA( 100 );
$var_class->func_echoB( 100 );
$var_class = new taxClass7();
$var_class->func_echoA( 100 );
$var_class->func_echoB( 100 );
?>
↓↓↓出力結果↓↓↓
税込:105円
税率:5%
税込:107円
税率:7%
税率:5%
税込:107円
税率:7%