php 静态成员(static)抽象类(abstract)和接口(interface)
首先看一下静态成员(static)和普通成员(public; protect; private)的区别:
静态成员是属于类的,普通成员是属于对象的; 例如:
<?php header("Content-type:text/html;charset=utf-8"); //以防出现乱码 class fenbi { public $length; public static $color; static function show() { echo "粉笔的颜色:" ,self:: $color; //静态成员的表示方法;静态方法里面无法调用普通成员 } function xianshi() { echo"显示:".self::$color; // 普通方法里面可以调用静态成员 } } $f=new fenbi(); //把类实例化 fenbi::$color="蓝色"; $f->show(); $f->xianshi(); //$color无法实例化 ?>
其次是抽象类,抽象类关键词是abstract; 特点是:不能被实例化,只能被继承; 目的:为了派生子类,控制子类
<?php header("Content-type:text/html;charset=utf-8"); abstract class dog { function jiao() { echo "汪汪"; } } class jinmao extends dog // 用类jinmao继承dog { } $d=new dog(); //这个地方这么写是错误的,抽象的类是无法实例化的 ?>
最后是接口,关键词是interface,是极度抽象的类,接口里面不能包含成员变量,只能包含成员方法,成员方法里面可以没有函数体,
实现接口的类,必须实现接口里面的方法 特点: 命名必须以I开头; 方法是没有具体的内容的; 子类继承的时候用关键词 implement ;
子类必须重写所有的接口类(父类)方法;
<?php header("conten-type:text/html; charset-utf-8") interface IUSB { function write(); //接口里面只能放方法;不可以放变量 function read(); } class mouse implements IUSB { function write() { echo "点一下鼠标"; } function read() { echo "给鼠标一个指令"; } } $m=new mouse(); //接口里面的类是可以实例化的 $m->write(); ?>
补充:下午有讲到__tostring/clone的使用方法 以及引用文件等
<?php class yue { function __tostring() { return"这是tostring的使用方法"; } } $y=new yue(); //echo $y; //讲到这里运用tostring可以直接输出$y $x=clone $y; echo$x //对$y进行了克隆,输出内容和上面一样 ?>
引用文件使用的是include 和 requair 这两种方法,在下一篇随笔会详细介绍着两种方法的区别 以及如何使用