我们知道,如果一个类没有实例化对象,我们是不能调用其实例属性的。不过,我们可以通过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关键字在类内声明静态属性,这些属性属于类本身,我们可以在不创建类实例的情况下直接访问。静态属性在内存中只有一份副本,所有实例共享同一份数据。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)