PHPの抽象クラスと抽象メソッドのサンプルです。
目次
サンプル | 抽象クラスと抽象メソッド |
抽象クラスの中に通常のメソッドを記述する | |
抽象クラスの中に通常の変数を記述する |
抽象クラスと抽象メソッド
abstract class クラス名{ abstract function メソッド名 } |
- 抽象クラスと抽象メソッドは、abstractというキーワードを指定します。
- 抽象メソッドは、メソッドの定義はしますが、処理内容は記述しません。
→処理内容は、抽象クラスを継承したクラスで記述します。
→抽象メソッドを上書きするのでオーバーライドになります。 - 抽象クラスを継承する場合、継承先のクラスはextendsを使用します。
→継承した側のクラスから見て継承できる抽象クラスは1つのみです。 - 抽象メソッドが1つでもあると抽象クラスになり、クラスの前にabstractをつけます。
- 抽象クラス自体はインスタンス化できません。
- 以下は、PHPマニュアルのクラスの抽象化のリンクです。
http://php.net/manual/ja/language.oop5.abstract.php
抽象クラスと抽象メソッドのサンプルです。
<?php
abstract class AbstractTest
{
abstract function getName1();
}
class Color1 extends AbstractTest
{
public function getName1(){
return "赤";
}
}
$cr1 = new Color1();
print $cr1->getName1(); //赤
?>
3行目は、クラスの前にabstractがついています。抽象クラスです。
4行目は、メソッドの前にabstractがついています。抽象メソッドです。
6行目は、抽象クラスをextendsで継承しています。
8行目は、4行目の抽象メソッドをオーバーライドしています。オーバーライドされていない場合、エラーになります。
抽象クラスの中に通常のメソッドを記述する
抽象クラスの中に通常のメソッドを記述することは可能です。
<?php
abstract class AbstractTest
{
abstract function getName1();
function getName2(){
return "青";
}
}
class Color1 extends AbstractTest
{
public function getName1(){
}
}
$cr1 = new Color1();
print $cr1->getName2(); //青
?>
6~8行目は、抽象クラスの中に通常のメソッドがあります。
16行目は、抽象クラスにある通常のメソッドを実行しています。
抽象クラスの中に通常の変数を記述する
抽象クラスの中に通常の変数を記述することも可能です。
<?php
abstract class AbstractTest
{
public $num1 = 1;
abstract function getName1();
}
class Color1 extends AbstractTest
{
public function getName1(){
}
}
$cr1 = new Color1();
print $cr1->num1; //1
?>
4行目は、抽象クラスの中に通常の変数があります。
14行目は、抽象クラスにある通常の変数の値を表示しています。
関連の記事
PHPクラスの仕組みと使い方のサンプル
PHP コンストラクタのサンプル
PHP クラスの継承の仕組みとサンプル
PHP オーバーライドのサンプル