PHP

PHPの継承 Interface 抽象クラスabstract 多重継承Trait

 

interface

使いどころ

  • 継承先が不特定な場合

特徴

  • 多重継承ができる。
  • interfaceで用意した関数は実装先で定義しなければならない。

 

abstractクラス

使いどころ

  • 特定の派生先で一部の実装が異なる場合

 

特徴

  • abstractの修飾子をつけたものは、継承先で定義しなくてはいけない。

 

<?php


abstract class Youkai
{
	abstract public function hissatuWaza();
	
	public function useMedal()
	{
		echo "妖怪メダルセットオン!";
		echo "<hr/>";
	}
}


interface Animal
{
	public function look();
	
	public function eat();
	
	public function naku();
}




class Komainu extends Youkai implements Animal
{

	public function hissatuWaza()
	{
		echo "ひとだま乱舞";
		echo "<hr/>";
	}

	public function look()
	{
		echo "よく見るズラ";
		echo "<hr/>";
	}
	
	public function eat()
	{
		echo "白くて甘くて美味しいズラ!";
		echo "<hr/>";
	}
	
	public function naku()
	{
		echo "もんげぇ";
		echo "<hr/>";
	}
	
}


$youkaiObj = new Komainu();

$youkaiObj->hissatuWaza();
$youkaiObj->useMedal();
echo "<hr/>";

$youkaiObj->look();
$youkaiObj->eat();
$youkaiObj->naku();

 

表示結果

ひとだま乱舞


妖怪メダルセットオン!

 



よく見るズラ


白くて甘くて美味しいズラ!


もんげぇ

 

 

 

Trait

特徴

  • クラスの階層を超えて、多重継承させることができる。

 

<?php


trait Youkai
{
	public function watch_chi()
	{
		echo "妖怪発見!";
		echo "<hr/>";
	}
}

trait HumanAct
{
	public function eatIce()
	{
		echo "白くて甘くて美味しいずら";
		echo "<hr/>";
	}
}


class Komainu
{
	use Youkai, HumanAct;
}



$youkaiObj = new Komainu();
$youkaiObj->watch_chi();
$youkaiObj->eatIce();

 

表示結果

妖怪発見!


白くて甘くて美味しいずら

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)