php 类接口继承练习

时间:2023-03-09 01:47:07
php 类接口继承练习
 <?php
/**
* @hypo
接口的特性:接口中定义的所有方法都必须是public
接口的实现:一个接口可以使用implements操作符,类中必须实现接口中的所有方法,否则会报fatal错误,如果要实现多个接口,可以使用逗号来分隔多个接口的名称。
*/
header("Content-type:text/html;charset=utf-8");
interface iTemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}
class Template implements iTemplate
{
private $vars = array(); public function setVariable($name, $var)
{
$this->vars[$name] = $var;
} public function getHtml($template)
{
foreach($this->vars as $name => $value) {
echo "\n".$name."\n".$value."<br>";
} }
}
// $t=new Template();
// $t->setVariable("ji","100");
// $t->setVariable("ji2","200");
// $t->getHtml('aa');
?>
<?php
//定义一接口,实现价格折扣
interface zk{
public function jiage();//价格
public function user_s();//用户
}
class ordUser implements zk{//普通用户.必须实现接口所有
private $zkl="0.97";
function jiage(){
return $this->zkl;
}
function user_s(){
return '普通用户';
}
} class vipUser implements zk{//VIP用户.必须实现接口所有
private $zkl="0.91";//折扣
function jiage(){
return $this->zkl;
}
function user_s(){
return 'vip用户';
}
} class svipUser implements zk{//超级vip用户.必须实现接口所有
private $zkl="0.88";
function jiage(){
return $this->zkl;
}
function user_s(){
return 'svip用户';
}
}
class run{//价格折扣计算
var $yjg;
var $us;
function buy($yjg,zk $us){//zk接口名,可以去掉没影响
$this->yjg=$yjg;
$this->us=$us;
$zjg=$this->us->jiage();
$user=$this->us->user_s();
echo $user.':原价格'.$yjg.',现价格'.$zjg*$yjg."<br>"; } } class hdPrc extends run{//继承run 显示不同用户价格
function sp($hd){
$this->buy(active::showActivePrc($hd),new ordUser);
$this->buy(active::showActivePrc($hd),new vipUser);
$this->buy(active::showActivePrc($hd),new svipUser);
} }
class active{//静态活动价格添加,显示,器
public static $aName;
public static $aPrc;
public static function addActive($aNam,$aPr){
self::$aName[$aNam]=$aPr;
}
public static function showActivePrc($aNam){
return self::$aName[$aNam];
}
} active::addActive("电影活动","111");
active::addActive("音乐活动","1122"); // $t=new run;
// $t->buy(active::showActivePrc("音乐活动"),new ordUser);
// $t->buy('111',new vipUser);
// $t->buy('111',new svipUser);
$b=new hdPrc;
$b-> sp('音乐活动');
?>