PHPのおさらい6 抽象クラス abstract

<!DOCTYPE html>
<html lang="ja">
<body>
	<p><?php echo "抽象クラス abstract" ?></p>
</body>
</html>

<?php
/*---------------------
abstract 
継承させる事を前提にしたクラス
それ自身は、インストラクトする事は出来ない。
抽象クラスで共通のメソッドやプロパティを定義しておけば
子クラスの実装をシンプルにしたり
子クラスの実装もれを防ぐ仕組み
abstractはextendsして初めて使える。
「抽象メソッド」を含むクラスは必然的に「抽象クラス」となり、
必ずクラスを「abstract修飾子」で宣言しなければいけない。
---------------------*/
abstract class Roster{
	public $name;//通常と同じようにプロパティを実装
	
	//抽象メソッドにして、継承クラスで必ず実装してくだというルールを記述
	//実装の中身を書く必要は無い。
	abstract public function hallow($name);
	function greeting(){
		echo "初めまして";
	}
}

class Subroster extends  Roster{//抽象メソッドも継承。実装しないとエラーになる。implement
	//メソッド名や引数の数は同じにしなければならない。
	public function hallow($name){
		echo $name."さん<br>";		
	}
}

$subobj =new Subroster;
$subobj->hallow("一郎");
$subobj->greeting(); // ←abstract class で定義したメンバも使える


/////////////////////////
表示結果↓↓↓

抽象クラス abstract

一郎さん
初めまして