静态ram的特点是属性特点

php中static静态类与static 静态变量用法区别
来源:&&&时间: 19:26:28&&&阅读数:
[导读] static 是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了。1 创建对象$object = new Class(),然后使用->调用:$object->attribute functi
static 是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了。
1. 创建对象$object = new Class(),然后使用&-&&调用:$object-&attribute/function,前提是该变量/方法可访问。 2. 直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件: A. 如果是变量,需要该变量可访问。 B. 如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件; b2) 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。然后我们再看一下使用$object-&& 和使用class::& 都有什么区别: 1. 使用$object-&& ,需要执行构造函数创建对象; 2. 使用class::& 调用静态方法/变量,不需要执行构造函数创建对象; 3. 使用class::& 调用非静态方法/变量,也不需要执行构造函数创建对象。然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢? 静态 static声明类成员或方法为 static ,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外)。静态成员属于类,不属于任何对象实例,但类的对象实例都能共享。例子:
&?Class Person{&&& // 定义静态成员属性&&& public static $country = &中国&;&&& // 定义静态成员方法&&& public static function myCountry() {&&&&&&& // 内部访问静态成员属性&&&&&&& echo &我是&.self::$country.&人&br /&&;&&& }}class Student extends Person {&&& function study() {&&&&&&& echo &我是&. parent::$country.&人&br /&&;&&& }}// 输出成员属性值echo Person::$country.&&br /&&;&&// 输出:中国$p1 = new Person();//echo $p1-&&&&// 错误写法// 访问静态成员方法Person::myCountry();&&&// 输出:我是中国人// 静态方法也可通过对象访问:$p1-&myCountry();// 子类中输出成员属性值echo Student::$country.&&br /&&;&// 输出:中国$t1 = new Student();$t1-&study();&&&&// 输出:我是中国人?&
运行该例子,输出:中国我是中国人我是中国人中国我是中国人小结在类内部访问静态成员属性或者方法,使用 self::(注意不是 $slef),如:
slef:: $countryslef:: myCountry()
在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),如:
parent:: $countryparent:: myCountry()
外部访问静态成员属性和方法为 类名/子类名:: ,如:
Person::$countryPerson::myCountry()Student::$country
但静态方法也可以通过普通对象的方式访问。例子 声明静态变量
&?PHP&& function foo(){&& static $int = 0;// correct&& static $int = 1+2;&& // wrong (as it is an expression)&& static $int = sqrt(121); // wrong (as it is an expression too)&& && $int++;&& echo $&& }&& ?&
例子 使用静态变量的例子
&?PHP&& function Test()&& {&& static $w3sky = 0;&& echo $w3&& $w3sky++;&& }&& ?&
现在,每次调用 Test() 函数都会输出 $w3sky 的值并加一。静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。一下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止:例子 静态变量与递归函数
&?PHP&& function Test()&& {&& static $count = 0;&& && $count++;&& echo $&& if ($count & 10) {&& Test();&& }&& $count--;&& }&& ?&
注: 静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。更多关于
除非特别声明,PHP100新闻均为原创或投稿报道,转载请注明作者及原文链接原文地址:
延伸阅读 More
视频教程 Video
网站服务:
会员问题 :
友情链接 :
网站投稿 :
@php100官方
php100官方微信
Copyright (C) 2007-, All Rights Reserved 版权所有 粤ICP备号-4
粤ICP备号-3阅读(...) 评论()JS_静态对象/方法/属性
Javascript说话的面向对象特点很弱,其他面向对象说话在创建类时只要应用关键字static即可指定类为静态类,Javascript没有供给static如许的关键字,要让Javascript也具有“静态”特点只有靠一些“奇技淫巧”了。
代码中列举了两种静态办法/属性的实现体式格式,一种是静态类的静态办法和属性,另一种长短静态类的静态办法和属性,代码申明都写在每行的代码注释里,这里就不反复了。
var Time = {
today: ‘&,
weather: ‘rain’,
show: function(){
alert(‘Today is ‘ + this.today);
//静态对象可直接应用,无需创建实例
alert(‘It is ‘ + Time.weather + ‘ today.’);
Time.show();
下面的代码错误,因为静态类不克不及创建实例
&//var t = new Time();
//t.show();
*****************************************
办法二* 通俗对象,同时拥有静态和非静态属性、办法*
可以用实例化
1.静态办法/属性应用类名接见*
&2.非静态办法/属性应用实例名接见
*****************************************/
&function Person(name) {
//非静态属性
this.name =
//非静态办法
this.show = function() {
&alert(‘My name is ‘ + this.name + ‘.’);
Person.mouth = 1;
//添加静态属性,人都是一张嘴
Person.cry = function() {
//添加静态办法,哇哇大哭
alert(‘Wa wa wa …’);
//应用prototype关键字添加非静态属性,每小我的牙可能不一样多
Person.prototype.teeth = 32;
//非静态办法必须经由过程类的实例来接见
var me = new Person(‘Zhangsan’);
//应用非静态办法、属性
me.show();
alert(‘I have ‘ + me.teeth + ‘ teeth.’);
//应用静态办法、属性
Person.cry();
&alert(‘I have ‘ + Person.mouth + ‘ mouth.’);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。static 静态方法 有什么优缺点_百度知道
static 静态方法 有什么优缺点
static方法是类中的一个成员方法,属于整个类,即使不用创建任何对象也可以直接调用!静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。C++中,若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法只能用类的静态成员。
其他类似问题
为您推荐:
提问者采纳
1、静态数据员
类内数据员声明前加关键字static该数据员类内静态数据员先举静态数据员例
//Example 5#include &iostream.h&class Myclass{public: Myclass(int a,int b,int c); void GetSum();private: int a,b,c; static int S//声明静态数据员};int Myclass::Sum=0;//定义并初始化静态数据员Myclass::Myclass(int a,int b,int c){ this-&a=a; this-&b=b; this-&c=c; Sum+=a+b+c;}void Myclass::GetSum(){ cout&&&Sum=&&&Sum&&}void main(){ Myclass M(1,2,3); M.GetSum(); Myclass N(4,5,6); N.GetSum(); M.GetSum();}
看静态数据员特点:
于非静态数据员每类象都自拷贝静态数据员作类员论类象定义少静态数据员程序份拷 贝由该类型所象共享访问说静态数据员该类所象所共该类象说静态数据员配内存供所象共 用所静态数据员值每象都值更新;
静态数据员存储全局数据区静态数据员定义要配空间所能类声明定义Example 5语句int Myclass::Sum=0;定义静态数据员;
静态数据员普通数据员遵public,protected,private访问规则;
静态数据员全局数据区配内存属于本类所象共享所属于特定类象没产类象其作用域见即没产类实例我操作;
静态数据员初始化与般数据员初始化同静态数据员初始化格式:
<数据类型><类名>::<静态数据员名>=<值>
类静态数据员两种访问形式:
<类象名>.<静态数据员名> 或 <类类型名>::<静态数据员名>
静态数据员访问权限允许(即public员)程序按述格式引用静态数据员 ;
静态数据员主要用各象都相同某项属性候比于存款类每实例利息都相同所应该利息设存款类静态数据员 两处第管定义少存款类象利息数据员都共享配全局数据区内存所节省存储空间第二旦利息需要改变要改变 则所存款类象利息全改变;
同全局变量相比使用静态数据员两优势:
静态数据员没进入程序全局名字空间存与程序其全局名字冲突能性;
实现信息隐藏静态数据员private员全局变量能;
2、静态员函数
与静态数据员我创建静态员函数类全部服务某类具体象服务静态员函数与静态数据员都类内部 实现属于类定义部 普通员函数般都隐含this指针this指针指向类象本身普通员函数总具体属于某类具体象通情况this 缺省函数fn()实际this-&fn()与普通函数相比静态员函数由于与任何象相联系具this指 针意义讲访问属于类象非静态数据员访问非静态员函数能调用其余静态员函数 面举静态员函数例
//Example 6#include &iostream.h&class Myclass{public: Myclass(int a,int b,int c); static void GetSum();/声明静态员函数private: int a,b,c; static int S//声明静态数据员};int Myclass::Sum=0;//定义并初始化静态数据员Myclass::Myclass(int a,int b,int c){ this-&a=a; this-&b=b; this-&c=c; Sum+=a+b+c; //非静态员函数访问静态数据员}void Myclass::GetSum() //静态员函数实现{// cout&&a&& //错误代码a非静态数据员 cout&&&Sum=&&&Sum&&}void main(){ Myclass M(1,2,3); M.GetSum(); Myclass N(4,5,6); N.GetSum(); Myclass::GetSum();}
关于静态员函数总结几点:
现类体外函数定义能指定关键字static;
静态员间相互访问包括静态员函数访问静态数据员访问静态员函数;
非静态员函数任意访问静态员函数静态数据员;
静态员函数能访问非静态员函数非静态数据员;
由于没this指针额外销静态员函数与类全局函数相比速度少许增;
调用静态员函数用员访问操作符(.)(-&)类象或指向类象指针调用静态员函数直接使用格式:
<类名>::<静态员函数名>(<参数表>)
调用类静态员函数
===============================================================================================
static静态变量声明符 声明程序块程序块或函数内部效值保持整程序期间配存储器空间编译器默认值0
C++用修饰符用控制变量存储式见性
2、要引入static?
函数内部定义变量程序执行定义处编译器栈配空间家知道函数栈配空间函数执行结束释放掉产问题: 想函数变量值保存至调用何实现 容易想定义全局变量定义全局变量许缺点明显缺点破坏变量访问范围(使函数定义变量仅仅受函数控制)
3、候用static?
需要数据象整类非某象服务,同力求破坏类封装性,即要求员隐藏类内部外见
4、static内部机制:
静态数据员要程序始运行必须存函数程序运行调用所静态数据员能任何函数内配空间初始化
空间配三能作类外部接口文件类声明;二类定义内部实现类员函数定义;三应用程序main()函数前全局数据声明定义处
静态数据员要实际配空间故能类声明定义(能声明数据员)类声明声明类尺寸规格并进行实际内存配所类声明写定义错误能文件类声明外部定义造使用该类源文件其重复定义
static引入告知编译器变量存储程序静态存储区非栈空间静态
数据员按定义现先顺序依初始化注意静态员嵌套要保证所嵌套员已经初始化消除顺序初始化反顺序
5、static优势:
节省内存所象所公象说静态数据员存储处供所象共用静态数据员值每象都值更新要静态数据员值更新保证所象存取更新相同值提高间效率
6、引用静态数据员采用格式:
&类名&::&静态员名&
静态数据员访问权限允许(即public员)程序按述格式
引用静态数据员
7、注意事项:
(1)类静态员函数属于整类非类象所没this指针导致
仅能访问类静态数据静态员函数
(2)能静态员函数定义虚函数
(3)由于静态员声明于类操作于其外所其取址操作少些特殊
变量址指向其数据类型指针 函数址类型nonmember函数指针
(4)由于静态员函数没this指针所差等同于nonmember函数结
产意想处:callback函数使我C++C-based X W
indow系统结合同功应用于线程函数身
(5)static并没增加程序空销相反缩短类父类静态员访问
间节省类内存空间
(6)静态数据员&定义或说明&前面加关键字static
(7)静态数据员静态存储所必须进行初始化
(8)静态员初始化与般数据员初始化同:
初始化类体外进行前面加static免与般静态变量或象相混淆;
初始化加该员访问权限控制符privatepublic等;
初始化使用作用域运算符标明所属类;
所我静态数据员初始化格式:
&数据类型&&类名&::&静态数据员名&=&值&
(9)防止父类影响类定义与父类相同静态变量屏蔽父类影响点需要注意:我说静态员父类类共享我重复定义静态员引起错误呢我编译器采用种绝妙手:name-mangling 用唯标志[编辑本段]static 函数
内部函数外部函数
源程序由源文件组C语言根据函数能否其源文件函数调用函数内部函数外部函数
1 内部函数(称静态函数)
源文件定义函数能本文件函数调用能同程序其文件函数调用种函数称内部函数
定义内部函数需函数类型前再加static关键字即所示:
static 函数类型 函数名(函数参数表)
关键字static译文静态所内部函数称静态函数处static含义指存储式指函数作用域仅局限于本文件
使用内部函数处:同编写同函数用担自定义函数否与其文件函数同名同名没关系
2 外部函数
外部函数定义:定义函数没加关键字static或冠关键字extern表示函数外部函数:
[extern] 函数类型 函数名(函数参数表)
调用外部函数需要其进行说明:
[extern] 函数类型 函数名(参数类型表)[函数名2(参数类型表2)……];
[案例]外部函数应用
(1)文件mainf.c
{ extern void input(…),process(…),output(…);
input(…); process(…); output(…);
(2)文件subf1.c
extern void input(……) /*定义外部函数*/
(3)文件subf2.c
extern void process(……) /*定义外部 函数*/
(4)文件subf3.c
extern void output(……) /*定义外部函数*/
其他4条回答
1 函数体声明静态变量函数调用程维持其值变2 模块内(函数体外)声明静态变量模块内所用函数访问能模块外其函数访问本全局变量3 模块内声明静态函数模块内其函数调用函数限制声明模块本范围内使用要想函数外或者模块外调用应该已static声明
优点:静态类能够使您的实现更简单、迅速,因为您不必创建对象就能调用其方法。缺点:如果创建了该类的任何实例,不能使用实例来访问静态成员。只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件。静态成员在第一次被访问之前并且在任何静态构造函数(如调用的话)之前初始化。
从启用就一直放在内存里面
直到系统判断出全部注销的时候
方法就是一段代码,静不静态占的内存没有区别
您可能关注的推广回答者:
static的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 静态页面的特点 的文章

 

随机推荐