PHP 抽象クラスと抽象メソッドのサンプル(abstract)

PHPの抽象クラスと抽象メソッドのサンプルです。

確認環境
・PHP 7.1.8

目次

抽象クラスと抽象メソッド

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 オーバーライドのサンプル

△上に戻る