高级特性
静态方法和属性:
大多数情况下,我们都是通过类的实例化来对类中的属性和方法进行访问,其实我们还可以通过类来访问他们,这样的方法和属性是“静态的”,必须用static关键词来声明:
class StaticExample{
static public $num=0;
static public function sayHello (){
print(“hello”);
}
}
静态方法是以类作为作用域的函数。静态方法不能访问这个类的普通属性,因为那些属性是属于一个对象的,但可以访问静态属性。因为是通过类而不是实例来访问静态元素,所有访问静态元素就不需要引用对象的变量,而是使用::(两个冒号或称之为域作用符)连接类名和静态元素来访问该静态元素;例如:StaticExample::$num;
StaticExample::sayHello();
而在StaticExample类内部访问,可以使用self关键字(注意不是$this):self::$num;
常量属性:
和全局常量一样,类常量一旦设置后就不能够被改变。常量属性用const关键字来声明:
class Example{
const MYNUM = 1;
}
常量属性只包含基本数据类型的值,不能将一个对象指派给常量,因此,同静态元素一样,只能通过类而不能通过类的实例来访问常量属性。
抽象类:
抽象类不能被实例化。抽象类中只定义(或部分实现)子类需要的方法。子类可以继承它,并且通过实现其中的具体方法来使抽象类具体化,可以用abstract来定义一个抽象类:
abstract class Example{
abstract public function sonExtend();
//子类必须实现该方法,一个抽象类至少有一个抽象方法;
}
接口:
抽象类提供了具体实现的标准,而接口就是纯粹的模板。接口只能定义功能,而不包含实现的内容。接口用关键字interface关键字声明。接口可以包含多个属性和方法声明(没有方法的实现体):
interface Getprice(){
public function getprice();
}
任何实现接口的类都有定义接口中所定义的所有方法,否则该类必须声明abstract,一个类可以拥有多个接口,通过关键字implement来接入接口。
Final类和方法:
如果希望类或方法完成确定不变的功能,担心覆写它会破坏这个功能,那么就需要使用final关键字。final关键字可以终止类的继承。final类不能有子类,final方法不能被覆写。
析构函数:
析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。
//析构函数
public function __destruct(){}__destruct() 析构函数,是在垃圾对象被回收时执行。
析构函数也可以被显式调用,但不要这样去做。
析构函数是由系统自动调用的,不要在程序中调用一个对象的虚构函数。
析构函数不能带有参数。GC(Garbage Collector)
在 PHP 中,没有任何变量指向这个对象时,这个对象就成为垃圾。 PHP 会将其在内存中销毁。
这是 PHP 的 GC(Garbage Collector)垃圾处理机制,防止内存溢出。
当一个 PHP 线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。
对象的高级特性
最新推荐文章于 2022-09-19 09:07:27 发布