静态,关键字:static 接口,IUSB , API 接口关键字:interface
//静态
//普通成员
//普通成员是属于对象的 //静态成员
//静态成员属于类的 //关键字:static
//self关键字:在类里面代表该类
//在静态方法里面不能调用普通成员
//在普通方法里面能够调用静态成员 //.$this代表该对象,需要用对象去调用它,不能用类名调用!说明了一个情况:在静态方法里面不能调用普通成员 class FenBi
{
public $length; //粉笔的长度
public static $color; //粉笔的颜色 static function show()
{
echo "粉笔颜色是:".self::$color;
} function XianShi()
{
echo "显示:".self::$color;
}
} $f = new FenBi(); //先造一个对象
$f->length; //用对象去调用普通成员 FenBi::$color = "红色"; //使用类名调用静态成员
FenBi::show();
$f->XianShi(); //抽象
//抽象类:关键字abstract
//特点:不能被实例化,只能被继承
//目的:为了派生子类,控制子类 abstract class Dog
{
public $name; function Jiao()
{
echo "汪汪";
}
} class JinMao extends Dog
{ } $d = new Dog();
1.用abstract关键字来修饰一个类时,这个类就叫抽象类,
2.用abstract关键字来修饰一个分法时,这个方法就是抽象方法。 抽象类
为什么设计抽象类这个技术?
1.在实际开发中,我们可能有这样一种类,是其它类的父类,但是它本身并不需要实例化,主要用途是 用于让子类来继承,这样可以达到代码复用,同时利于项目设计者,设计类! 快速入门案例 //在实现方法覆盖的时候,访问修饰符可以不一样
//但是必须满足:子类的访问范围>=父类的访问范围
abstract class Anima1{
public $name;
protected $age;
//这个方法没有方法体,这个方法主要是为了让子类去实现,
abstract public function cry(); } class Cat extends Anima1{
public function cry(){
echo "猫咪叫唤.."; } }
//创建一个子类实例
$cat1 = new Cat();
$cat1->cry(); 使用抽象类的注意事项:
1.基本用法
abstact class 类名{
//方法
//属性
} 2.如果一个类使用abstract 来修饰,则该类就是抽象类,如果一个方法被abstract修饰,则该方法就 是抽象方法【抽象方法就不能有方法体】 3.抽象类可以没有抽象方法,同时还可以有实现了的方法
//在实现方法覆盖的时候,访问修饰符可以不一样
//但是必须满足:子类的访问范围>=父类的访问范围
abstract class Anima1{
public $name="abc";
protected $age;
//这个方法没有方法体,这个方法主要是为了让子类去实现,
abstract public function cry(); public function getName(){
return $this->name;
}
} class Cat extends Anima1{
public function cry(){
echo "猫咪叫唤.."; } }
//创建一个子类实例
$cat1 = new Cat();
$cat1->cry();
echo $cat1->getName(); 4.如果一个类中,只要有抽象方法,则该类必须声明 abstract abstract class A{
abstract function test(); } echo "ok"; 5.如果 A 类继承了一个抽象类 B,则要求 A 类实现从 B 类继承的所有抽象方法。
案例如下:
//这是一个抽象类
abstract class A{
abstract function test();
abstract function test2();
}
//B类要么自己抽象,或者实现从A类继承的抽象方法。
class B extends A{
function test(){
echo "我实现A:text()";
} function test(){
echo "我实现A:text2()";
} }
echo "ok"; //练习题 abstract class Animal{ public function abc(){
echo "abc"; } public static function abc2(){ echo "ok no";
}
} Animal::abc2();//直接有类名调用抽象方法。
//接口
//极度抽象的类
//接口里面不能包含成员变量,只能包含成员方法
//成员方法可以没有函数体
//接口关键字:interface
//实现接口的类,必须实现接口里面的所有方法 interface IUSB
{
function read(); //读的方法
function write(); //写的方法
} //鼠标的驱动类
class Mouse implements IUSB
{
function read()
{
echo "鼠标点击了";
}
function write()
{
echo "给鼠标一个指令";
}
} //键盘的驱动类
class JianPan implements IUSB
{
function read()
{
echo "键盘输入了内容";
}
function write()
{
echo "给键盘指令";
}
} $m = new Mouse();
$m->write(); $j = new JianPan();
$j->read();
接口:
快速入门案例 //使用程序模拟现实情况
//定义规范(方法/属性)
interface iusb{ public function start();
public function stop(); } //编写相机类,让它去实现接口
//1.当一个类实现了某个接口,则要求该类必须实现这个接口的所有方法
class camera implements iusb{ public function start(){ echo "相机开始工作...."; } public function stop(){ echo "相机停止工作....";
} } //编写手机类
class phone implements iusb{ public function start(){ echo "手机开始工作...."; } public function stop(){ echo "手机停止工作....";
} } //如何使用
//相机对象
$camera1=new Camera();
$camera1->start();
$camera1->stop(); //手机对象
$phone1=new phone();
$phone1->start();
$phone1->stop(); //注意细节:
1.接口的使用基本语法 interface 接口名{
//属性
//方法 }
//接口的方法都不能有方法体 //如何去实现接口
class 类名 implements 接口名{ } //接口它的作用就是声明一些方法,供其他类来实现,接口还体现编程中我们希望的效果 高内聚低耦合 的特点:
//接口:API
静态,关键字:static 接口,IUSB , API 接口关键字:interface的更多相关文章
- 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
http接口.api接口.RPC接口.RMI.webservice.Restful等概念 收藏 Linux一叶 https://my.oschina.net/heavenly/blog/499661 ...
- 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_16-认证接口开发-Api接口定义
4.3 认证服务 4.3.1 需求分析 认证服务需要实现的功能如下: 1.登录接口 前端post提交账号.密码等,用户身份校验通过,生成令牌,并将令牌存储到redis. 将令牌写入cookie. 2. ...
- Java学习日记-5 关键字static和final 以及接口
乱入:表达式中的自动类型转换 char,short,byte都升级为int类型进行运算,结果为int,但其原变量类型并不改变. 所以,byte b = 10; b = b*b; 编译时会报错.但是写 ...
- webservice接口和http接口(API接口)的区别
web service(SOAP)与HTTP接口的区别: 什么是web service? 答:soap请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content- ...
- HTTP API接口安全设计
HTTP API接口安全设计 API接口调用方式 HTTP + 请求签名机制 HTTP + 参数签名机制 HTTPS + 访问令牌机制 有没有更好的方案? OAuth授权机制 OAuth2.0服务 ...
- itnesse实现api接口自动化测试学习
上午在园子里乱逛,看了不少小伙伴们分享的接口测试方面的知识,大家所叙述到的一些经验或多或少,我也曾遇到过,突然意识到知识的点滴积累是多么的重要,我记得我最早接触接口测试的时候,就是只在浏览器里人工测试 ...
- 利用fitnesse实现api接口自动化测试
上午在园子里乱逛,看了不少小伙伴们分享的接口测试方面的知识,仔细想想,我做接口测试也有几个年头了,大家所叙述到的一些经验或多或少,我也曾遇到过,突然意识到知识的点滴积累是多么的重要,我记得我最早接触接 ...
- Python多线程豆瓣影评API接口爬虫
爬虫库 使用简单的requests库,这是一个阻塞的库,速度比较慢. 解析使用XPATH表达式 总体采用类的形式 多线程 使用concurrent.future并发模块,建立线程池,把future对象 ...
- 31 面向对象编程 接口 普通类:只有具体实现 声明类的关键字是class,声明接口关键字是interface 接口的作用
接口 概念 普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有! 接口:只有规范!自己无法写方法!专业的约束!约束和实现分离:面向接口编程~ 接口就是规范,定义的是一组规则,体现了现实世界中 ...
随机推荐
- Android性能优化-App启动优化
原文地址:https://developer.android.com/topic/performance/launch-time.html#common 通常用户期望app响应和加载速度越快越好.一个 ...
- 数据库连接池优化配置(druid,dbcp,c3p0)
主要描述了数据库连接池参数配置的准则,针对常用的数据库连接池(c3p0,dbcp,druid)给出推荐的配置. 考虑因素 1:当前连接DB的规模 2:并发情况 3:执行db的响应时间 配置考虑 1 ...
- dubbo服务启动的方式
dubbo服务启动的方式: 1.dubbo自带的脚本, 2.直接用main方法启动dubbo的spring容器,参见dubbo-test里的各个例子 3.dubbo的spring boot start ...
- GitHub下载安装以及开源项目
Git for Windows安装与使用 http://cioworld.org/freedom/content/git-windows 下载Git-1.8.3-preview20130601.exe ...
- 用命令让vbox的虚拟硬盘文件转换成vmware的vmdk
VirtualBox的生成备份功能只是个系统还原点 这个生成备份功能备份速度非常快,其实它并不是备份,而是相当于xp系统中的建立系统还原点.但是要注意的是如果你的虚拟硬盘文件(***.vdi)在别的V ...
- Springmvc 整合 jetbrick 实例
应用环境: <jetbrick.version>1.2.8</jetbrick.version> <antlr4-runtime.version>4.2.2< ...
- shiny: Web Application Framework for R
shiny: Web Application Framework for R 基于R语言的一个web框架,适用于数据分析与图表绘画展示类型的网站.
- struts2:struts.properties配置文件介绍及常量加载顺序
1. 背景 struts2框架中有两个核心配置文件,其中struts.xml文件主要负责管理应用中的action映射,以及该action包含的result定义等.除此之外,struts2框架还包括一个 ...
- ipa重签名
为什么要研究重签名问题?将程序打包成ipa包后,ipa包中会包含Provisioning Profile和_CodeSignature等文件,里面包含了对整个ipa的签名信息. 一旦改动ipa中的不论 ...
- 关于java线程、进程的一些问题
1.多核硬件上,java中同一个进程的多个线程可以运行在不同的CPU上么? 应该是可以的,在eclipse上面跑一个模拟程序,一个死循环的线程可以占用系统(4核,Win7)%的CPU,4个这样的线程刚 ...