PHP面向对象之析构方法,以及关键字static

来源:互联网 发布:黑马程序员 java 编辑:程序博客网 时间:2024/05/16 05:56

1析构方法会自动调用

2析构方法主要用于销毁资源

3析构方法调用顺序是先创建的对象后销毁


析构方法在什么时候调用:

①当程序(进程)结束退出时

②当一个对象成为了垃圾对象的时候,该改对象的析构方法也会被调用

③所谓的垃圾对象是指一个对象已经脱离了应用。

④一旦成为了垃圾对象,该对象所占有的资源就会立马被回收。


类的析构方法:

①php5加入析构方法:function __destruct()

②析构方法没有返回值

③主要作用是为了释放资源,并不是销毁对象本身

④销毁对象钱,系统会自动调用析构方法(销毁对象发生在调用析构函数之前,由系统自己去执行销毁)

⑤一个类最多只有一个析构方法。


全局变量的定义和赋值要分开

静态变量定义方法:public static $dfd;

                                      $dfd="";

访问静态变量的基本方式:①在类外部      类名::$静态变量名

                                                ②在类北部      类名::$静态变量名   或者  类名::$静态变量名

静态变量并不依赖于对象的创建与否。

在实际编程过程中,我们往往需要使用静态方法去操作静态变量,但是不能操作非静态属性


静态方法的特点

1 静态方法去操作静态变量

2静态方法不能操作非静态变量


注意事项:普通的成员方法既可以操作静态变量,也可以操作非静态变量

成员方法里面可以调用其他成员方法 但是需要使用$this来引用。


 final关键字

1.      如果我们希望某个类不被其它的类来继承(可能因为安全考虑...), 可以使用final
<?php
       final class A{
              
       }
       class B extends A{
       }
       echo "ok";
?>
2.      如果我们希望某个方法,比如计算个人所得税的方法,不能子类改写,可以使用fianl 来修饰方法
class A{
      
              final public function getRate($salary){
                     
                     return $salary*0.08;
              }
              
       }
       class B extends A{
              //不能去覆盖父类的getRate方法.
              /*public function getRate($sal){
                     return $sal*0.01;
              }*/
       }
      
       $b=new B();
       echo $b->getRate(100);
3.      final关键字不能去修饰属性.
 const 关键字的讲解
//当你有一个属性,不希望被修改,则考虑使用const 做成常量
基本用法是
class A{
       const 常量名=赋初值;
}
interface 接口名{
       const 常量名=赋初值;
}

常量是public
使用 类名::常量名; 接口名::常量
<?php
       class A{
              //常量在定义的时候,必须给初值.
              //const 关键字前面不要带修饰符号.
              const TAX_RATE=0.08;
              public function payTax($val){
                     //常量不能修改.
                     //A::TAX_RATE=0.01;
                     //return $val*self::TAX_RATE; 【ok】
                     return $val*A::TAX_RATE; //【ok】
              }
       }
       $a=new A();
       echo $a->payTax(200);
?>

1.      常量在定义的时候需要赋初值
2.      常量不能修改.
3.      常量名不能有 $, 一般是大写, 默认是public
4.      常量在类的内部使用 self::常量的名称 类名::常量的名称
在类的外部使用 类名::常量的名称.





原创粉丝点击