static和const关键字的使用

简介:

static关键字在类中描述的成员属性和成员函数都是静态的。

static成员能限制外部的访问,因为static成员是属于类的,而不是属于任何对象实例。

从内存的角度讲,其中对象是放在“堆内存”中,对象的引用是放在“栈内存”中,而静态成员被放在初始化静态段中,在类的第一次加载的时候加入的。可以让对内存中的所有对象所共享。如下图所示:

 

复制代码
<?php
class
Person{ public static $myCountry = "中国"; public static function say(){ echo "我的祖国是:".self::$myCountry."<br>"; } }
//输出静态属性 echo Person::$myCountry.
"<br>"; //调用静态方法
Person::say();
//修改静态属性 Person::$myCountry
= "中国-江苏"; echo Person::$myCountry."<br>";
?>
输出结果为:
中国
我的祖国是:中国
中国-江苏
复制代码

类中的静态方法只能访问类的静态的属性。类中的静态的方法是不能访问类的非静态的成员的。我们用self来访问类中的静态属性。self与thisselfthis相似,只不过self代表静态方法所在的类,this引用指针,代表调用此方法的对象。静态方法是不用对象调用的,所有就没有thisthis这个引用了。没有this,就没办法调用类中的其他的成员属性。

 

 


const是一个定义常量的关键字。在类里面常用const来定义常量。用“const”修饰的成员属性的访问方式和“static”修饰的成员访问的方式差不多,也是使用“类名”,在方法里面使用“self”关键字。但是不用使用“$”符号,也不能使用对象来访问。

复制代码
<?php
class MyClass{
    const constant = 'constant value';
    function showConstant(){
        //方法中调用常量,没有$
        echo self::constant."<br>";
    }
}
//类直接调用,没有$
echo MyClass::constant."<br>";
$class = new MyClass();
$class ->showConstant();
?>




本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/archive/2012/08/17/2644300.html如需转载请自行联系原作者

相关文章
|
1月前
final修饰的变量有三种
final修饰的变量有三种
10 0
|
4月前
|
消息中间件 Kubernetes NoSQL
static、const关键字
static、const关键字
|
4月前
|
C++
C总结-关键字 static const extern
C总结-关键字 static const extern
18 0
|
7月前
|
编译器 C语言 C++
const修饰的究竟是常量还是变量?
const修饰的究竟是常量还是变量?
54 0
|
9月前
|
存储 编译器 C语言
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
【C语言】关键字static——static修饰局部变量、全局变量和函数详解!
230 0
|
5月前
|
C语言
c语言中的static静态(1)static修饰局部变量
c语言中的static静态(1)static修饰局部变量
28 1
|
5月前
|
存储 设计模式 算法
[C++] static静态成员变量/函数的用法
[C++] static静态成员变量/函数的用法
35 1
|
5月前
|
C++
c++中const修饰成员函数的问题
问题引入: 看下面这一段代码:
30 0
|
12月前
5-const修饰成员函数
5-const修饰成员函数