• php 类接口继承练习


      1 <?php
      2 /**
      3 * @hypo
      4  接口的特性:接口中定义的所有方法都必须是public 
      5  接口的实现:一个接口可以使用implements操作符,类中必须实现接口中的所有方法,否则会报fatal错误,如果要实现多个接口,可以使用逗号来分隔多个接口的名称。
      6 */
      7 header("Content-type:text/html;charset=utf-8");
      8 interface iTemplate  
      9 {  
     10     public function setVariable($name, $var);  
     11     public function getHtml($template);  
     12 }  
     13 class Template implements iTemplate  
     14 {  
     15     private $vars = array();  
     16     
     17     public function setVariable($name, $var)  
     18     {  
     19         $this->vars[$name] = $var;  
     20     }  
     21     
     22     public function getHtml($template)  
     23     {  
     24         foreach($this->vars as $name => $value) {  
     25             echo "\n".$name."\n".$value."<br>";
     26         }  
     27    
     28      
     29     }  
     30 }
     31 // $t=new Template();
     32 // $t->setVariable("ji","100");
     33 // $t->setVariable("ji2","200");
     34 // $t->getHtml('aa');
     35 ?>
     36 <?php
     37 //定义一接口,实现价格折扣
     38 interface zk{
     39     public function jiage();//价格
     40     public function user_s();//用户
     41 }
     42 class ordUser implements zk{//普通用户.必须实现接口所有
     43     private $zkl="0.97";
     44     function jiage(){
     45         return $this->zkl;
     46     }
     47     function user_s(){
     48         return '普通用户';
     49     }
     50 }
     51 
     52 class vipUser implements zk{//VIP用户.必须实现接口所有
     53     private $zkl="0.91";//折扣
     54     function jiage(){
     55         return $this->zkl;
     56     }
     57     function user_s(){
     58         return 'vip用户';
     59     }
     60 }
     61 
     62 class svipUser implements zk{//超级vip用户.必须实现接口所有
     63     private $zkl="0.88";
     64     function jiage(){
     65         return $this->zkl;
     66     }
     67     function user_s(){
     68         return 'svip用户';
     69     }
     70 }
     71 class run{//价格折扣计算
     72     var $yjg;
     73     var $us;
     74     function buy($yjg,zk $us){//zk接口名,可以去掉没影响
     75         $this->yjg=$yjg;
     76         $this->us=$us;
     77         $zjg=$this->us->jiage();
     78         $user=$this->us->user_s();
     79         echo $user.':原价格'.$yjg.',现价格'.$zjg*$yjg."<br>";
     80 
     81     }
     82 
     83 }
     84 
     85 class hdPrc extends run{//继承run 显示不同用户价格
     86     function sp($hd){
     87         $this->buy(active::showActivePrc($hd),new ordUser);
     88         $this->buy(active::showActivePrc($hd),new vipUser);
     89         $this->buy(active::showActivePrc($hd),new svipUser);
     90     }
     91     
     92 }
     93 class active{//静态活动价格添加,显示,器
     94     public static $aName;
     95     public static $aPrc;
     96     public static function addActive($aNam,$aPr){
     97          self::$aName[$aNam]=$aPr;        
     98     }    
     99     public static function showActivePrc($aNam){
    100         return  self::$aName[$aNam];
    101     }
    102 }
    103 
    104 active::addActive("电影活动","111");
    105 active::addActive("音乐活动","1122");
    106 
    107 // $t=new run;
    108 // $t->buy(active::showActivePrc("音乐活动"),new ordUser);
    109 // $t->buy('111',new vipUser);
    110 // $t->buy('111',new svipUser);
    111 $b=new hdPrc;
    112 $b-> sp('音乐活动');
    113 ?>
  • 相关阅读:
    js函数——倒计时模块+无缝滚动
    一步步编写avalon组件02:分页组件
    mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理
    只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果
    某考试 T1 arg
    vijos 2035 奇数偶数与绚丽多彩的数
    bzoj 5093: [Lydsy1711月赛]图的价值
    [HEOI2016/TJOI2016]求和
    [TJOI2015]概率论
    Codeforces 616 E Sum of Remainders
  • 原文地址:https://www.cnblogs.com/hiit/p/5645756.html
Copyright © 2020-2023  润新知