我们知道,如果一个类没有实例化对象,我们是不能调用其实例属性的。不过,我们可以通过static关键字声明静态属性,这些属性属于类本身,不需要实例化就能访问。
1. 什么是静态属性?
静态属性是使用static关键字声明的属性,它属于类本身而不是类的任何实例。所有类的实例共享同一个静态属性。
如何定义静态属性?
2. 在类中使用static关键字声明:
<?php
class Dotcpp_user
{
// 静态属性
static public $nickName = 'dotcpp_user';
}
?>3. 如何访问静态属性?
使用以下语法访问静态属性:
<?php
class Dotcpp_user
{
// 静态属性
static public $nickName = 'dotcpp_user';
}
/* 类名::$属性名 */
echo Dotcpp_user::$nickName; // 输出: dotcpp_user
?>4. 继承中的静态属性:
在继承关系中,子类继承的静态属性也遵循访问权限规则(public、protected和private):
<?php
//1. 父类
class Base
{
static public $str1 = 'dotcpp';
static protected $str2 = 'dotcpp';
static private $str3 = 'dotcpp';
}
//2. 子类继承父类
class Son extends Base {
// 添加公共方法来访问protected属性
public static function getStr2() {
return self::$str2; // 在子类内部可以访问父类的protected属性
}
}
// 访问public属性
echo Son::$str1; // 输出:dotcpp
// 通过公共方法访问protected属性
echo Son::getStr2(); // 输出:dotcpp
//访问权限规则:
//public:可以在任何地方访问
//protected:只能在类内部和子类内部访问
//private:只能在定义它的类内部访问
?>总结:通过static关键字在类内声明静态属性,这些属性属于类本身,我们可以在不创建类实例的情况下直接访问。静态属性在内存中只有一份副本,所有实例共享同一份数据。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程