PHP静态成员变量


Posted in PHP onFebruary 14, 2017

静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.

1、静态全局变量

定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量。

特点:

A、该变量在全局数据区分配内存。

B、初始化:如果不显式初始化,那么将被隐式初始化为0(自动变量是随机的,除非显式地初始化)。

C、访变量只在本源文件可见,严格的讲应该为定义之处开始到本文件结束。

2.静态局部变量

特点:

A、该变量在全局数据区分配内存。

B、初始化:如果不显式初始化,那么将被隐式初始化为0,以后的函数调用不再进行初始化。

C、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或 语句块结束时,其作用域随之结束。

静态数据成员和普通数据成员一样遵从public,protected,private访问规则;

因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;‘'静态数据成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式为:

数据类型><类名>::<静态数据成员名>=<值>

类的静态数据成员有两种访问形式:

<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>

如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员 ;

静态数据成员主要用在各个对象都有相同的某项属性的时候。比如对于一个存款类,每个实例的利息都是相同的。所以,应该把利息设为存款类的静态数据成员。这有两个好处,第一,不管定义多少个存款类对象,利息数据成员都共享分配在全局数据区的内存,所以节省存储空间。第二,一旦利息需要改变时,只要改变一次,则所有存款类对象的利息全改变过来了;

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
提升PHP执行速度全攻略(下)
Oct 09 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
PHP 一个随机字符串生成代码
May 26 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
浅谈php的优缺点
Jul 14 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
php中序列化与反序列化详解
Feb 13 #PHP
PHP最常用的正则表达式
Feb 13 #PHP
PHP面相对象中的重载与重写
Feb 13 #PHP
PHP中overload与override的区别
Feb 13 #PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 #PHP
curl 出现错误的调试方法(必看)
Feb 13 #PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 #PHP
You might like
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
js中的面向对象入门
2017/03/06 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
python网络编程示例(客户端与服务端)
2014/04/24 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
python记录程序运行时间的三种方法
2017/07/14 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
校园活动策划书范文
2014/01/10 职场文书
11月红领巾广播稿
2014/01/17 职场文书
高中生期末评语大全
2014/01/28 职场文书
20年同学聚会感言
2014/02/03 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
2014年公司工作总结
2014/11/22 职场文书
2014年党小组工作总结
2014/12/20 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python