PHP------ 静态

面向对象有三大特性:封装、继承、多态

面相对象,的简称:OOP

 

                                                      静态

 

一包粉笔,每一包粉笔当做一个对象,把这包粉笔抽象出一个类,叫做粉笔类

。(相同的一包粉笔)粉笔有长度,粉笔颜色。长度和颜色有什么区别,长度是属于谁的,这一包粉笔的长度有可能一样吗??有很多不一样的。粉笔的具体长度是属于具体对象,颜色(没有特殊的情况下,就是一样的颜色)颜色属于谁的???颜色是属于这一类的。长度是属于每一个对象。

普通的成员是属于对象的。

颜色是属于这一类的。长度是属于每一个对象。这样就要区别对带

class fenbi

Public $changdu;   //属于对象的

poblic $yanse;      //属于类的

}

在定义的时候就要把它区分开,怎样区分呢??/

如果属于类的,加一个关键字static,这个成员是属于类的就在前面加上static的关键字,这样$yanse;和$changdu;就区分开了,$changdu;   //属于对象的,poblic $yanse;      //属于类的

static的关键字又称为静态的,

这样就把$yanse;成员变量定义为一个静态的成员变量,把这个$changdu;定义为一个普通的成员变量,这就是静态和普通的区别。

静态的成员,在定义是需要加上一个关键字static,静态的成员是属于类的,普通成员是属于对象的。

 

在调用普通的时候怎样调用changdu呢???

$f=new feibi();  //先创建一个对象(造对象)

$f->changdu ;//在调用长度

 

静态的怎样调用/?

 

 1 <?php
 2 
 3 class fenbi
 4 
 5 {
 6 
 7          public $changdu ;
 8 
 9          public  static  $yanse ;
10 
11 }
12 
13 $f=new fenbi();
14 
15 $f->yanse;
16 
17 ?>

如果把这个成员定义为一个静态的,这个对象就找不到了,他不是属于这个对象的,它是属于具体某一个大类的,$yanse ;不是属于每一个粉笔的,是属于这一包粉笔的。

 

静态的成员怎样去调用能?? 

静态的是属于类的,所以在调用的时候用类名来调用。

  

 1 <?php
 2 
 3 class fenbi
 4 
 5 {
 6 
 7          public $changdu ;
 8 
 9          public static $yanse ;
10 
11 }
12 
13 feibi::$yanse;//粉笔类里有一个成员是yanse ,yanse是属于fenbi这一个类的
14 
15 ?>

怎样调用静态的成员:用类名::来调用里面的某一个成员;

 

可以随时把一个成员的变成一个静态的。静态下的的值可以进行取值,赋值,运算。

静态的缺点: 没有实例化

 

 

  1 <?php

 2 
 3 class fenbi
 4 
 5 {
 6 
 7          public $changdu ;
 8 
 9          public static $yanse ;
10 
11  public static function lianjie()
12 
13 {
14 
15 Return ”连接对象”;
16 
17 }
18 
19 }
20 Fenbi::lianjie();

所以这可方法,是属于类的,还是属于对象的,没有一个具体的说明和规则,完全是自己定义的,想让它是普通的就是普通的,想让它是静态的就是静态的

调用静态成员的方法和变量,都是用::来调用

 静态是属于类的,非静态的是属于对象的。

普通的怎样调用,静态的怎样调用??

静态的方法去掉用普通的成员,是不行的。

 

 1 <?php
 2 
 3 class fenbi
 4 
 5 {
 6 
 7          public $changdu ;
 8 
 9          public static $yanse ;
10 
11         
12 
13          public static function lianjie()
14 
15          {
16 
17            $this->changdu;  //是不可以的,是调用不到的
18 
19            return"连接对象";
20 
21          }
22 
23 }
24 
25 fenbi::$yanse;
26 
27 fenbi::lianjie();
28 
29  
30 
31 ?>

静态的方法去掉用普通的成员,是不能的???因为静态的是属于类的,普通是属于对象的,还没有造对象怎么会有$this->changdu;它呢?$this是代表该对象。

 

静态的方法可不可以调用静态的成员,是可以的。

 

 1 <?php
 2 
 3 class fenbi
 4 
 5 {
 6 
 7          public $changdu ;
 8 
 9          public static $yanse ;
10 
11         
12 
13          public static function lianjie()
14 
15          {
16 
17            Fenbi::$yanse; //静态的可以调用静态的成员
18 
19            return"连接对象";
20 
21          }
22 
23 }
24 
25 fenbi::$yanse;
26 
27 fenbi::lianjie();
28 
29  
30 
31 ?>
32 
33  

普通的方法是可以调用静态的 。

 

 

 1 <?php
 2 
 3 class fenbi
 4 
 5 {
 6 
 7          public $changdu ;
 8 
 9          public static $yanse=”red” ;  //赋初始值
10 
11         
12 
13          public static function lianjie()
14 
15          {
16 
17            Fenbi::$yanse;
18 
19            return"连接对象";
20 
21      public function Test()  //普通方法调用静态的
22 
23 {
24 
25 echo fenbi::$yansu;
26 
27 }
28 
29          }
30 
31 }
32 
33 $r=new fenbi ();//造对象
34 
35 $r-> Test() ;//用对象调用里面的方法
36 
37 ?>
38 
39  

 一定要记住: 

【1】普通成员是属于对象的

【2】静态成员是属于类的

【3】普通成员方法里面可以调用静态成员

【4】静态方法里面不能调用普通成员

 

 

 

原文地址:https://www.cnblogs.com/yuyu1993/p/5566186.html