php5中类的学习

复制代码 代码如下:


<?php     
class TEST     
{     
    const NAME = 'value'; // 常量     
    public $name = 'value'; // 属性     
    public function name() // 方法     
    {     
        echo 'value';     
    }     
}     
?>    



在这之中,属性和方法又可以使用public, protected, private三个不同的关键字来将属性和方法的作用范围做进一步的区分,带有private关键字的属性和方法,只有所在的类中的方法才能调用;带有protected关键字的属性和方法,除了自己以外,自己的父类和子类中的方法也可以调用;带有public关键字的属性和方法,则可以从实例化以后的对象中进行调用,这样做最大的好处给所有的属性和方法增加了一些描述的特征,更便于整理和组织代码的结构。const关键字先跳过,和后面的static一起讲。

static关键字是有别于public, protected, private的另一类型关键字(因此可以和public, protected, private叠加起来使用):

复制代码 代码如下:


<?php     
class TEST     
{     
    public static function name()      
    {     
        echo 'value';     
    }     
}     
?>


带有static关键字的方法,可以在不对类进行实例化的情况下直接通过“::”符号调用,和public, protected, private的搭配,也可以让调用区分权限,但是一般都是和public搭档,前面提到的常量关键字const,应该就是public static类型的,因此只能通过self::NAME,TEST::NAME这样的形式调用常量,后面的__construct,__destruct等方法,都是属于static。

类的结构部分,最后介绍的两个关键字是abstract和final,abstract关键字表示这个类必须被他的子类覆写,而final关键字表示这个类必须不能被他的子类覆写,这两个关键字的功能是正好相反的,带有abstract的方法被成为抽象方法,带有抽象方法的类,成为抽象类,这个在后面还有介绍。

类的使用:

类的使用主要有两种方法,一种是使用new关键字,另一种是使用“::”符号:

PHP代码 

复制代码 代码如下:


<?php     
class TEST     
{     
    public static function name()      
    {     
        echo 'value';     
    }     
}     
//方法1:使用new关键字     
$test = new TEST;     
$test->name();     

//方法2:使用“::”符号     
TEST::name();     
?> 

  

(1):使用new关键字成为实例化,上面的$test就是一个通过TEST类实例化而产生的对象,$test->name()称为调用$test对象的name方法。
(2):使用new关键字使用类的时候,可以使用$this来指代类本身。
(3):使用“::”符号的前提是方法必须是带有static关键字的,使用new关键字时,被调用的方法,必须带有public关键字(一个方法如果不带public, protected, private中的任何一个关键字,则默认为public)
(4):同一个类可以通过new关键字被实例成多个不同的对象,但是彼此之间的是隔离的;“::”符号在使用的时候,方法在多次使用之间,是共享的:

PHP代码

复制代码 代码如下:


<?php     
class TEST1     
{     
    public $name = 0;     
    public function name()      
    {     
        $this->name = $this->name + 1;     
    }     
}     

$test1 = new TEST1;     
$test2 = new TEST1;     
$test1->name(); //$name1 == 1     
$test2->name(); //$name1 == 1     

/*--------------------------------------------*/    

class TEST2     
{     
    public static $name = 0;     
    public static function name()      
    {     
        TEST2::$name = TEST2::$name + 1;     

    }     
}     
TEST2::name(); // $name == 1     
TEST2::name(); // $name == 2     
?>    

类的关系:

类与类之间的关系,主要有抽象,接口和继承:

PHP代码 

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7dc8ac374c17a88efbb90030bbe6bd03.html