<?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. Oracle SQL Developer中SQL语句格式化快捷键

    Oracle SQL Developer中SQL语句格式化快捷键 格式化SQL语句:Ctrl+F7

  2. zTree实现地市县三级级联DAO接口

    zTree实现地市县三级级联DAO接口 ProvinceDao.java: /** * @Title:ProvinceDao.java * @Package:com.gwtjs.dao * @Desc ...

  3. 【原】Java学习笔记030 - 异常

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 异常:Java ...

  4. .Net之路,感谢对我深远影响的三位前辈

    为什么要写这篇文章?为什么创立这个站点? 本人大四,学习.Net三年有余,随着近期开始转向对.Net Core的关注,我开始了解到了张善友(www.csharpkit.com).腾飞(www.jess ...

  5. python实现列表倒叙打印

    def func(listNode): listNode.reverse() for i in listNode: print(i) li = [1,2,3,4,5] func(li) 利用pytho ...

  6. 一个简单的freemark输入输出的案例(一)

    一. 创建FreeMarker模板文件user.ftl <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&qu ...

  7. Directory Opus(DO) 11破解版安装方法(转)

    DO11原版下载 32位:http://www.gpsoft.com.au/DScripts/download.asp?file=Opus11/DOpusInstall.exe 64位:http:// ...

  8. 二、CSS

    css基本语法及页面引用 css基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值 ...

  9. HttpSessionActivationListener序列化与反序列化

    一.序列化与反序列化 1.什么是序列化 把对象转化位字节序列的过程称为序列化(保存到硬盘,持久化) 把字节序列转化位对象的过程称为反序列化(存放于内存) 2.序列化的用途 把对象的字节序列永久保存到硬 ...

  10. Python+ Selenium自动化登录腾讯QQ邮箱实例

    学习了Python语言一段时间后,在公司的项目里也使用到了python来写测试脚本,一些重复的操作都使用脚本来处理了.大大的提高工作效率,减少了一些手工重复的操作. 以下是使用unittest框架写的 ...