静态
1.在定义类时,类中声明的成员变量和成员方法,属于对象的。
2.当用关键字static修饰类或类中的变量和方法时,该成员变量和成员方法就属于类的。
3.静态成员可以不通过构造对象就直接调用。
4.静态方法不能直接调用普通成员
5.普通成员可以调用静态
下面用一个例子来解释一下
class FenBi
{
public $length=10; //粉笔长度
public static $color="红"; //粉笔颜色
public static function test()
{
echo "静态成员方法".self::$color; //静态成员的调用办法
}
public function ceshi()
{
echo self::$color;
}
}
$f = new FenBi();
$f->length; //普通成员调用方式
$f->ceshi();
FenBi::$color = "蓝色"; //静态成员的调用方式
FenBi::test();*/静态方法的调用方式
抽象
关键字:abstract
抽象类由于过于抽象了,所以不能被实例化,做为父类存在,可以被继承
抽象方法里面不能包含函数体,其具体功能在子类里面通过重写实现,如果子类不想实现,那么子类也必须是抽象的。
包含抽象方法的类一定是抽象类
abstract class DongWu
{
public $name;
abstract public function test(); //定义了一个抽象方法,但是这个方法不能有函数体
}
class Dog extends DongWu //定义一个子类,继承了父类
{
public function test() //重写了父类抽象方法,有函数体
{
echo "重写了";
}
}
$d = new Dog();
var_dump($d);
接口(interface)
1.接口 就是极度抽象的类
2.接口里面没有成员变量
3.接口里面的所有成员函数全部为抽象的
4.接口的名字以I开头
5.一般未特意明确是面向对象里的接口,理解为API (application programing interface)不通过读源码而实现功能接口
interface IUSB
{
public function read(); //读的方法
public function write(); //写的方法
}
class ShuBiao implements IUSB //继承接口的关键字
{
public function read() //子类重写实现接口的方法
{
echo "鼠标插入了";
}
public function write()
{
echo "往鼠标写内容";
}
}
$s = new ShuBiao();
$s->read();