先来讲静态
静态的的分类和区别
1、普通成员
普通成员是属于对象的
2、静态成员
静态成员是属于类的
加上关键字static可以变成静态的
调用类中的变量,需要双冒号::
静态的不需要造新对象
普通方法里面可以调用静态成员
静态方法里面不能调用普通方法
self关键字在类里面代表该类,静态成员用的
例:
<?php class Ren { public $name="张三"; public static $zhongzu; //静态成员 //普通方法 function Say() { echo self::$zhongzu."你好"; 可以调用静态成员,关键字self } //静态方法 static function Run() { echo $this->name; } } Ren::$zhongzu = "战斗民族"; 静态调用类中变量 Ren::Run(); $r = new Ren(); $r->Say(); ?>
抽象类:
比类更加抽象
不能被实例化,作为父类使用
关键字abstract写在类名前面
extends是继承的意思
<?php abstract class DongWu 加关键字,就是一个抽象类 { public $name; public $age; function Run() { echo "跑"; } } class Dog extends DongWu 子类继承父类的 { } $d = new Dog(); $d->Run(); 以运算为例: abstract class YunSuan 加关键字,成为抽象类 { public $a; public $b; function Suan() { } } class Jia extends YunSuan 子类继承父类 { function Suan() { return $this->a+$this->b; } } class Jian extends YunSuan 同样是子类继承父类,父类可以派生多个子类 { function Suan() { return $this->a-$this->b; } } class Cheng extends YunSuan { function Suan() { return $this->a*$this->b; } } $jia = new Cheng(); $jia->a=10; $jia->b=5; echo $jia->Suan(); ?>
接口:
极度抽象的类
定义方式不用class 用imterface
命名规则一般用I开头
接口里面只声明函数名,没有函数体,不要写花括号
继承接口的关键字不是用extends,要用implements
接口里面的方法主要用来控制子类,必须实现该方法
例:
<?php interface IUSB { function Read(); //接口里面只声明函数名 function Write(); } class ShuBiao implements IUSB { function Read() { echo "鼠标插上了"; } function Write() { echo "给鼠标传了数据"; } } $s = new ShuBiao(); $s->Read(); //接口 //1.面向对象 interface //2.API ?>