面向对象(静态,抽象,接口)--2017-04-20
1、静态:
静态成员:属于类
普通成员:属于对象
关键字:static
class FenBi
{
public $length=10; // 普通成员
public static $color="red"; // 静态成员
public static function test() // 静态成员方法
{
echo"静态成员方法".self::$color;
echo"静态成员方法".FenBi::$color;
echo $this->length; //出错;静态成员方法不能调用普通成员变量
}
public function ceshi() // 普通成员方法
{
echo self::$color; // $f->ceshi();普通成员方法可以调用静态成员变量
}
}
$f= new FenBi();
$f->length; //普通成员的调用方法
FenBi::$color; //静态成员的调用方法用双冒号调;不用造对象,可以直接调用
FenBi::test();
2、抽象
抽象类:比原来的类更加抽象,不能实例化,可以被继承;主要作为父类使用
关键字:abstract
注意:
(1)抽象方法里面不能包含函数体,其具体功能在子类里面通过重写实现
方法:子类要么做成抽象类;要么实现父类的抽象方法
(2)包含抽象方法的类一定是抽象类
abstract class Dw
{
public $name;
abstract function test(); //抽象方法不能有函数体,所以去掉大括弧
}
class Dog extends Dw
{
public function test()
{
echo "adad";
}
}
$d=new Dw();//会报错 不能实现实例化
$dd=new Dog();
var_dump($dd);
作用: 用于限制或规范下面人员的行为
3、接口
极度抽象的类
接口里面不能写成员变量;
接口里面所有的成员方法全部为抽象的
interface IUSB //类名定义方法:以大写i开头
{
public function read();
public function write(); //默认抽象类;不用写
}
class ShuBiao implements IUSB
{
public function read()
{
echo "哈哈";
}
public function write()
{
echo "嘿嘿";
}
}
$s=new ShuBiao();
$s->read();
$s->write();
提到接口,一般会有两种情况:
1、面向对象里
2、API(Application Programming Interface 应用程序编译接口)里的网络服务接口