我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP中什么是静态以及静态属性和静态方法是什么意思

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP中什么是静态以及静态属性和静态方法是什么意思

本篇内容主要讲解“PHP中什么是静态以及静态属性和静态方法是什么意思”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP中什么是静态以及静态属性和静态方法是什么意思”吧!

静态是什么?

我们之前讲到, 调用成员变量和方法, 都需要用到对象. 但如果我们不想实例化, 直接访问变量和方法呢? 这就用到了静态static功能.

在定义变量和方法的时候, 在前面加上static关键词, 就转化为了静态, 就可以通过类名::双引号直接进行访问.

我们继续将上面的例子改写为静态变量和静态方法:

class Classname          //定义一个类, 类名不区分大小写{static public $name;      //定义静态成员变量;static public $height=180;    //初始化赋值static public $weight, $nationality; //可以一个语句定义多个变量static protected $age;static public function player($name,$height, $weight, $age, $sex){                    //定义静态成员方法, 以及方法形参    self::$name=$name;                 //为成员变量赋值, 使用了代词self::    self::$weight=$weight;    self::$height=$height;    if (self::$height<185 && self::$weight<=85){        return self::$name.',符合要求';    }else{        return self::$name.',不太行';    }}}echo Classname::$height;              //180, 通过类名::访问静态变量echo Classname::player('xiaoming',180,80,22, 'Male');  //通过类名::访问静态方法;

上面的例子可以注意到, 我将所有的$this都换成了self. 因为$this指代的是调用对象, 而self指代的方法所在的类本身. 静态方法可以通过类名::直接调用, 这里没有对象, \$this指代的就为空, 系统就会报错. 所以静态方法内调用变量, 不能通过$this.

注意self::后面的变量要有$符号.

静态的本质

不要小瞧这个static, 加上了它, 其实不只是可以直接调用这么简单, 成员变量和方法的意义发生了本质上的变化:

在静态方法中只能调用静态变量, 而不能调用普通变量, 普通方法则可以调用静态变量. 这是由静态方法的属性决定的, 因为普通的成员变量是与"对象"绑定的, 而静态变量是与"类"绑定的.

我再详细解释一下静态变量和普通变量的区别:

  • 普通的成员变量与对象绑定, 不同的对象都有一套属于自己的成员变量. 不同对象的成员变量都有各自的赋值, 虽然有可能相同, 但你的就是你的.

  • 静态变量是和类绑定的. 如果静态变量改变了, 那么这个类所有的对象中, 这个值都会发生改变.

  • 静态变量也可以通过对象::来进行访问, 但其实同一个类的对象访问的其实都是同一个静态变量值. 可以理解为静态变量是整个类共享的, 包括它的子类.

  • 所以即便其中一个对象被销毁了, 静态变量值还会保留.

  • 子类也可以重写父类的静态成员变量, 但父类的静态变量依然存在, 这两个静态成员变量是独立的. 会根据调用的类名分别进行访问.

我们举个例子:

class Shouji{    static public $test;           //定义一个静态变量    static function test5()        //定义静态方法来操作并输出静态变量    {        self::$test++;        echo self::$test;    }}class Shouji2 extends  Shouji          //定义一个子类{    static function test5()           //定义子类的静态方法    {        self::$test++;                 //访问并操作父类的静态变量        echo self::$test;    }}$shouji1=new Shouji;               //新建父类对象$shouji1->test5();     //1, 通过对象调用静态方法$shouji2=new Shouji;   //新建另一个父类对象$shouji2->test5();    //2,  在前一次操作基础上继续+1$shouji3=new Shouji2;    //新建子类对象$shouji3->test5();    //3, 调用子类同名静态方法, 继续+1echo Shouji::$test;    //3, 通过父类::直接访问静态成员变量echo $shouji1::$test;   //3, 通过对象名::可以直接访问静态成员变量

通过上面这个例子, 我们还能有以下几点总结:

  • 子类可以重写父类的静态方法.

  • 方法内访问静态变量需要用::符号. 不能用$this;

  • 静态方法和静态变量都会被子类继承.

  • 静态变量不能由->访问, 而是由 ::(双冒号)进行访问

  • 对象可以通过对象名->来直接调用静态成员方法, 这个和调用普通方法是一样的.

到此,相信大家对“PHP中什么是静态以及静态属性和静态方法是什么意思”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP中什么是静态以及静态属性和静态方法是什么意思

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP中什么是静态以及静态属性和静态方法是什么意思

本篇内容主要讲解“PHP中什么是静态以及静态属性和静态方法是什么意思”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP中什么是静态以及静态属性和静态方法是什么意思”吧!静态是什么?我们之前讲到
2023-06-20

php中的静态属性和静态方法是什么

在php中,通过static关键字修饰的成员属性和成员方法被称为静态属性和静态方法,访问静态属性和静态方法的语法“类名::$静态属性”和“类名::静态方法()”。
2021-03-06

java中什么是静态方法和非静态方法

本篇文章为大家展示了java中什么是静态方法和非静态方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的
2023-06-14

php中的静态属性和静态方法怎么用

这篇文章主要介绍“php中的静态属性和静态方法怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php中的静态属性和静态方法怎么用”文章能帮助大家解决问题。在php中,通过static关键字修饰的
2023-06-26

php页面静态化是什么意思

php页面静态化有两种意思:1、把PHP动态页面保存成静态的html文件,用户访问该静态页面,而不是用户每一次访问都重新生成一张相同的网页,可以减小服务器开销;2、将动态页面的url地址转换成类似于静态页面的url地址,便于搜索引擎的收录。
2019-07-31

java中的静态属性与静态方法可以被继承么

结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite),而是被隐藏。原因分析:1、静态方法和属性是属于类的,调用的时候可以直接通过类名.方法名完成,不需要继承机制便可以调用。如果子类里面定义了静态方法和属性,那么这时候父类的静态方法
java中的静态属性与静态方法可以被继承么
2016-02-05

什么是C#静态方法

本篇内容介绍了“什么是C#静态方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#静态方法是什么呢?在我们编程开发的应用中C#静态方法可以
2023-06-17

php中什么是静态变量

这篇文章主要介绍了php中什么是静态变量,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是静态变量:在函数内部使用static声明得变量就是静态变量;静态变量的特征:静态变
2023-06-15

java中的静态方法是什么

本篇内容主要讲解“java中的静态方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中的静态方法是什么”吧!在java中,静态方法指被static修饰的成员方法。静态方法不需要通过
2023-06-20

php方法中的静态变量是什么

php中的静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中;在PHP中只要在变量前加上关键字static,该变量就成为静态变量了。
2017-05-04

PHP中静态方法的特点是什么

小编给大家分享一下PHP中静态方法的特点是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP中静态方法的特点是:1、静态方法使用static关键字修饰;2、
2023-06-27

php中什么叫静态方法

在php中,通过static关键字修饰的成员方法被称为静态方法,静态方法的内存空间是固定的,只能访问类中的静态成员,可以通过“类名::静态方法()”语句访问静态方法。
2018-06-15

C#中静态类和静态类成员的区别是什么

C#中静态类和静态类成员的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#静态类和静态类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录