对象的高级特性

 

             高级特性

静态方法和属性:

大多数情况下,我们都是通过类的实例化来对类中的属性和方法进行访问,其实我们还可以通过类来访问他们,这样的方法和属性是“静态的”,必须用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 线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值