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('音乐活动');
?>
php 类接口继承练习的更多相关文章
- 【C# 复习总结】类、继承和接口
1 类 定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat { } class Cat:object { } C#中所有的类都是默认由object类派生来的,显示指 ...
- python的类的继承-接口继承-归一化设计
1.先在子类本身找,如果子类没有,会去父类找 class Dad: '这个是爸爸类' money=10#Dad类的数据属性 def __init__(self,name): print("爸 ...
- java第四节 类的继承/抽象/接口/多态性
/* 类的继承 类的继承可以简化类的定义 java只支持单继承,不允许多重继承 可以有多层继承,即一个类可以继承其一个类的子类,如类B继承了类A,类C又可以继承类B 那么类C也间接继承了类A 子类继承 ...
- python3 面向对象、类、继承、组合、派生、接口、子类重用父类方法
对象是特征(变量)与技能(函数)的结合体而类是一系列对象共同的特征与技能的集合体 class teacher: lesson = "python" def __init__(sel ...
- Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)
一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点: ...
- Scala学习——类,继承,接口(中)
基本类的使用:(初) package com.dtspark.scala.basics /** * trait是一个接口 * 接口的第一次继承用extends,多继承时用with * 多继承时,如果这 ...
- python定义接口继承类
zxq547 python定义接口继承类invalid syntax解决办法 1 2 3 4 5 6 7 class s_all(metaclass=abc.ABCMeta): #python ...
- 序列化多表操作、请求与响应、视图组件(子类与拓展类)、继承GenericAPIView类重写接口
今日内容概要 序列化多表操作 请求与相应 视图组件 内容详细 1.序列化多表操作 模型类 models.py中 # 新建django项目 # 创建表 模型类models.py中: from djang ...
- python定义接口继承类invalid syntax解决办法
class s_all(metaclass=abc.ABCMeta): #python2.7用此方法定义接口继承 # __metaclass__ = abc.ABCMeta @abc.abstract ...
随机推荐
- Flex读取txt文件中的内容(一)
Flex读取txt文件中的内容 phone.txt: 13000003847 13000003848 13000003849 13000003850 13000003851 13000003852 1 ...
- form表单中的input有哪些类型
form表单中的input有哪些类型 1.button <input type="button"/> 2.checkbox <input type="c ...
- Linux显示所有运行中的进程
Linux显示所有运行中的进程 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps aux | less USER PID %CPU %MEM VSZ RSS ...
- JSP常见的7个动作指令
JSP常见的7个动作指令 1.jsp:forward指令 执行页面转向,将请求处理转发到下一个页面 2.jsp:param指令 用于传递参数 3.jsp:include指令 用于动态 ...
- org.hibernate.engine.jndi.JndiException:Error parsing JNDI name[foo]
1.错误描述 WARN:HHH00027:Could not bind factory to JNDI org.hibernate.engine.jndi.JndiException:Error pa ...
- sourcetree的使用
sourcetree的使用 仓库 使用source tree自带的clone,用source tree生成密钥对进行免登录. 分支 从master出发,新建一个分支/从远程获取一个分支.在这个分支做开 ...
- oracle的下载地址以及步骤
一.下载地址 1.oracle官网:https://www.oracle.com/cn/index.html 2. 点击右上角先选择语音,然后注册一个新账户,如果有oracle直接登录就可以 3.点击 ...
- Linux之shell典型应用之脚本实现
一. 提取Linux操作系统信息 二. 获取操作系统运行状态 三. 分析应用状态 四. 应用日志分析 第一章:VIM编辑器设置 一.语法高亮 syntax on/off 二.显示行号 set ...
- Css Secret 案例全套
Css Secret 案例全套 github地址 案例地址 该书揭示了 47 个鲜为人知的 CSS 技巧,主要内容包括背景与边框.形状. 视觉效果.字体排印.用户体验.结构与布局.过渡与动画等.去年买 ...
- js拖拽分析
js拖拽分析 思路 1.三个鼠标事件,mousedown,mousemove,mouseup 2.可移动性absolute 3.边界限制 得到鼠标点击处和div边界的距离,然后得出top 和 left ...