<?php declare(strict_types=1); ini_set('display_errors', 'On'); error_reporting(-1); /** * Human类 */ class Human { private static string $name = 'anonymous'; private static string $gender = 'n/a'; private static int $age = 0; public function __construct(string $name, string $gender, int $age) { self::$name = $name; self::$gender = $gender; self::$age = $age; } public static function profile(): void { $name = self::$name; $gender = self::$gender; $age = self::$age; echo "俺叫{$name}({$gender}),今年{$age}岁。" . PHP_EOL; } } Human::profile(); // 俺叫anonymous(n/a),今年0岁。 $human1 = new Human('张三', '男', 18); $human1->profile(); // 俺叫张三(男),今年18岁。 Human::profile(); // 俺叫张三(男),今年18岁。 $human2 = new Human('李四', '女', 17); $human1->profile(); // 俺叫李四(女),今年17岁。 $human2->profile(); // 俺叫李四(女),今年17岁。 Human::profile(); // 俺叫李四(女),今年17岁。 //========== 总结 ==========// // 1、对象也是可以使用静态属性和调用静态方法的,但这不是一个良好的编程方式,对于静态属性和静态方法,应该尽可能使用类名来操作, // 而不是使用对象来操作,因为这样可以更清晰地表达代码含义。 // 2、由不需要创建对象就可以使用静态属性和调用静态方法可知,静态属性和静态方法是属于类的,或者说静态属性和静态方法是所有对象共有的, // 无论创建了多少个对象,静态属性始终只有一个,这些对象操作静态属性实际上是在操作同一个变量。
Copyright © 2024 码农人生. All Rights Reserved