• 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】静态方法里面不能调用普通成员

     

     

     

  • 相关阅读:
    ES 分组排序java实现
    java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
    Java 虚拟机对锁优化所做的努力
    Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。
    20条最最常用的Linux命令讲解
    Linux查看系统配置常用命令
    全面认识Docker和基本指令
    25个深度学习开源数据集
    Docker 简单运用
    一小时学会C# 6
  • 原文地址:https://www.cnblogs.com/yuyu1993/p/5566186.html
Copyright © 2020-2023  润新知