php 静态成员(static)抽象类(abstract)和接口(interface)
静态成员(static)和普通成员(public; protect; private)的区别:静态成员是属于类的,普通成员是属于对象的
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; 特点是:不能被实例化,只能被继承; 目的:为了派生子类,控制子类
abstract class dog
{
function jiao()
{
echo "汪汪";
}
}
class jinmao extends dog // 用类jinmao继承dog
{
}
$d=new dog(); //这个地方这么写是错误的,抽象的类是无法实例化的
最后是接口,关键词是interface,是极度抽象的类,接口里面不能包含成员变量,只能包含成员方法,成员方法里面可以没有函数体,实现接口的类,必须实现接口里面的方法 特点: 命名必须以I开头; 方法是没有具体的内容的; 子类继承的时候用关键词 implement ;子类必须重写所有的接口类(父类)方法;
nterface IUSB
{
function write(); //接口里面只能放方法;不可以放变量
function read();
}
class mouse implements IUSB
{
function write()
{
echo "点一下鼠标";
}
function read()
{
echo "给鼠标一个指令";
}
}
$m=new mouse(); //接口里面的类是可以实例化的
$m->write();
_tostring/clone的使用方法
class yue
{
function __tostring()
{
return"这是tostring的使用方法";
}
}
$y=new yue();
//echo $y; //讲到这里运用tostring可以直接输出$y
$x=clone $y;
echo$x //对$y进行了克隆,输出内容和上面一样