php面向对象中static静态属性和静态方法的调用

网络编程 2025-03-28 20:29www.168986.cn编程入门

深入理解PHP面向对象编程中的Static静态属性和静态方法

我们将通过生动的实例来讲解PHP中面向对象编程的static静态属性和静态方法的调用。如果你正在学习PHP或对面向对象编程感兴趣,那么这篇文章将为你提供有价值的参考。

我们需要明白什么是静态属性和静态方法。在PHP中,静态属性和方法属于类本身,而不是类的实例化对象。这意味着我们不需要创建类的实例就可以调用它们。它们在内存中只有一个位置,无论我们创建了多少个类的实例。

接下来,让我们通过一个简单的示例来深入理解这个概念:

```php

header("content-type:text/html;charset=utf-8");

class Human {

static public $name = "小妹"; // 静态属性

public $height = 180; // 非静态属性

static public function tell() { // 静态方法

echo self::$name; // 静态方法调用静态属性,使用self关键词

// echo $this->height; // 错误。静态方法不能调用非静态属性

}

public function say() { // 普通方法

echo self::$name . "我说话了"; // 普通方法调用静态属性,同样使用self关键词

echo $this->height; // 普通方法可以调用非静态属性

}

}

// 对象可以访问静态方法和非静态方法

$p1 = new Human();

$p1->say();

$p1->tell();

// 对象可以访问静态属性。但不能通过对象访问非静态属性

echo Human::$name; // 正确。对象访问静态属性

// echo $p1->name; // 错误。非静态属性的内存位置不在对象里

// 静态方法可以通过类名直接调用,但需要注意方法的定义

Human::tell(); // 正确。调用静态方法

// Human::say(); // 错误。如果say()方法中有$this,则不能直接通过类名调用

?>

```

通过这个示例,我们可以得出以下结论:

1. 静态属性不需要实例化即可调用,因为静态属性存放在类里,调用方法为"类名::属性名"。

2. 静态方法不需要实例化即可调用。

3. 静态方法不能调用非静态属性,因为非静态属性需要实例化后存放在对象里。

4. 静态方法可以调用非静态方法,使用self关键词。在PHP中,一个方法被self::后,它就自动转变为静态方法。但需要注意的是,通过类名直接调用的静态方法中不能含有$this引用。否则会导致错误。希望本文的讲解对大家学习PHP面向对象编程有所帮助。如有任何疑问或需要进一步的讨论,欢迎交流学习。同时感谢大家的阅读和支持!

上一篇:ASP.NET数组删除重复值实现代码 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by