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