<?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('音乐活动');
?>

php 类接口继承练习的更多相关文章

  1. 【C# 复习总结】类、继承和接口

    1 类 定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat { } class Cat:object { } C#中所有的类都是默认由object类派生来的,显示指 ...

  2. python的类的继承-接口继承-归一化设计

    1.先在子类本身找,如果子类没有,会去父类找 class Dad: '这个是爸爸类' money=10#Dad类的数据属性 def __init__(self,name): print("爸 ...

  3. java第四节 类的继承/抽象/接口/多态性

    /* 类的继承 类的继承可以简化类的定义 java只支持单继承,不允许多重继承 可以有多层继承,即一个类可以继承其一个类的子类,如类B继承了类A,类C又可以继承类B 那么类C也间接继承了类A 子类继承 ...

  4. python3 面向对象、类、继承、组合、派生、接口、子类重用父类方法

    对象是特征(变量)与技能(函数)的结合体而类是一系列对象共同的特征与技能的集合体 class teacher: lesson = "python" def __init__(sel ...

  5. Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

    一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点: ...

  6. Scala学习——类,继承,接口(中)

    基本类的使用:(初) package com.dtspark.scala.basics /** * trait是一个接口 * 接口的第一次继承用extends,多继承时用with * 多继承时,如果这 ...

  7. python定义接口继承类

    zxq547 python定义接口继承类invalid syntax解决办法 1 2 3 4 5 6 7 class s_all(metaclass=abc.ABCMeta):     #python ...

  8. 序列化多表操作、请求与响应、视图组件(子类与拓展类)、继承GenericAPIView类重写接口

    今日内容概要 序列化多表操作 请求与相应 视图组件 内容详细 1.序列化多表操作 模型类 models.py中 # 新建django项目 # 创建表 模型类models.py中: from djang ...

  9. python定义接口继承类invalid syntax解决办法

    class s_all(metaclass=abc.ABCMeta): #python2.7用此方法定义接口继承 # __metaclass__ = abc.ABCMeta @abc.abstract ...

随机推荐

  1. JDBC完成的三个基本工作

    JDBC完成的三个基本工作 1.与数据库建立连接 2.执行SQL语句 3.获得SQL语句的执行结果

  2. 错误代码: 1045 Access denied for user 'skyusers'@'%' (using password: YES)

    1. 错误描述 GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "."; 1 queries exe ...

  3. 石子归并 51Nod - 1021

    N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价.   例如: 1 2 3 4,有 ...

  4. WPF自学入门(三)WPF路由事件之内置路由事件

    有没有想过在.NET中已经有了事件机制,为什么在WPF中不直接使用.NET事件要加入路由事件来取代事件呢?最直观的原因就是典型的WPF应用程序使用很多元素关联和组合起来,是否还记得在WPF自学入门(一 ...

  5. 【转载】Java并发编程:volatile关键字解析(写的非常好的一篇文章)

    原文出处: 海子 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volat ...

  6. [Luogu4174][NOI2006]最大获益

    luogu sol 一周没摸键盘了回来刷刷水题练练手感 显然,最大化收益可以转化为最小化损失,从而建立最小割模型. 记\(tot=\sum_{i=1}^{m}C_i\),事先假设所有的获益都得到了,那 ...

  7. 【BZOJ3196】二逼平衡树(树状数组,线段树)

    [BZOJ3196]二逼平衡树(树状数组,线段树) 题面 BZOJ题面 题解 如果不存在区间修改操作: 搞一个权值线段树 区间第K大--->直接在线段树上二分 某个数第几大--->查询一下 ...

  8. 【BZOJ4012】开店(主席树)

    [BZOJ4012]开店(主席树) 题面 Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱 ...

  9. 多米诺骨牌放置问题(状压DP)

    例题: 最近小A遇到了一个很有趣的问题: 现在有一个\(n\times m\)规格的桌面,我们希望用\(1 \times 2\)规格的多米诺骨牌将其覆盖. 例如,对于一个\(10 \times 11\ ...

  10. java设计模式-----11、代理模式

    Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问. 所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代 ...