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 ...
随机推荐
- 【mongodb系统学习之十一】mongodb删除数据
十一.mongodb删除数据: 1).删除全部文档:remove,语法db.collectionName.remove({}):小括号里边必须要有条件,否则不成功:如果只是一个空的{},则会删除集合内 ...
- mac下安装ELK
本文主要为自己所走弯路而做的补充,对小白(比如我)来讲某些博客讲的还是高深了,特地来此补充说明一些东西. 主要步骤参考http://blog.csdn.net/ywheel1989/article/d ...
- PortableApps使用入门
PortableApps使用入门 Software 介绍 添加软件 绿软下载站推荐 介绍 官网:http://portableapps.com/ PortableApps作为一款卓越的绿软管理软件,它 ...
- Python爬虫 股票数据爬取
前一篇提到了与股票数据相关的可能几种数据情况,本篇接着上篇,介绍一下多个网页的数据爬取.目标抓取平安银行(000001)从1989年~2017年的全部财务数据. 数据源分析 地址分析 http://m ...
- 使用Restify+superagent做数据转发
最近为了解决跨域问题,做了一个Node数据转发服务器,使用到了Restify和superagent. Restify 是nodejs的模块.虽然restify的API或多或少的参考了express,但 ...
- 【SPOJ】NUMOFPAL - Number of Palindromes(Manacher,回文树)
[SPOJ]NUMOFPAL - Number of Palindromes(Manacher,回文树) 题面 洛谷 求一个串中包含几个回文串 题解 Manacher傻逼题 只是用回文树写写而已.. ...
- 【BZOJ1500】【NOI2005】维修数列(Splay)
[BZOJ1500][NOI2005]维修数列(Splay) 题面 不想再看见这种毒瘤题,自己去BZOJ看 题解 Splay良心模板题 真的很简单 我一言不发 #include<iostream ...
- [luogu3412]仓鼠找sugar II
题面在这里 题意 给定一棵树(\(n\le10^5\)),仓鼠随机选择起点和终点,之后从起点开始随机游走,每次都会等概率地选择和其相邻的任一道路,直到到达终点,求到达终点时步数的期望 sol 因为这一 ...
- [Luogu3425][POI2005]KOS-Dicing
题面戳这 题目描述 Dicing is a two-player game and its outcome is fully random. Lately its popularity increas ...
- error:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
问题:mysql中id存的是int(10),java代码中的id为long,转不过去 解决:mysql中的int要是需要转到java中的long,需要选择unsigned这个选项,即if(unsign ...