### PHP5 类与对象编程知识点详解 #### 一、范围解析操作符(::) 范围解析操作符,也称为“Paamayim Nekudotayim”或双冒号操作符,是PHP中用于访问静态成员、方法和常量的一个重要操作符。此操作符在类的外部使用时,必须配合类名一起使用。 **特点:** 1. **访问静态成员和方法:** 当你需要在类的外部访问某个类的静态成员或方法时,必须使用类名加双冒号操作符的方式。 2. **覆盖成员和方法:** 在子类中覆盖父类的成员或方法时,可以通过双冒号操作符显式地调用父类的成员或方法。 **示例代码:** ```php <?php class MyClass { const CONST_VALUE = 'A constant value'; } echo MyClass::CONST_VALUE; // 输出 "A constant value" ?> ``` #### 二、self 和 parent 关键字 `self` 和 `parent` 是两个特殊的类关键字,它们分别代表当前类和父类。 **特点:** 1. **self:** 表示当前类。它可以用来访问当前类的成员或方法。 2. **parent:** 表示当前类的直接父类。在子类中,可以通过它来访问父类的成员或方法。 **示例代码:** ```php <?php class OtherClass extends MyClass { public static $my_static = 'static var'; public static function doubleColon() { echo parent::CONST_VALUE . "\n"; // 输出 "A constant value" echo self::$my_static . "\n"; // 输出 "static var" } } OtherClass::doubleColon(); ?> ``` #### 三、方法覆盖 在面向对象编程中,子类可以覆盖(override)父类的方法。这意味着即使子类中定义了相同名称的方法,也不会自动执行父类中的方法,除非子类中显式调用父类的方法。 **特点:** 1. **覆盖:** 子类中可以定义与父类同名的方法,从而覆盖父类的方法实现。 2. **显式调用父类方法:** 可以使用 `parent::` 的方式在子类中显式调用父类的方法。 **示例代码:** ```php <?php class MyClass { protected function myFunc() { echo "MyClass::myFunc()\n"; } } class OtherClass extends MyClass { public function myFunc() { parent::myFunc(); // 显式调用父类方法 echo "OtherClass::myFunc()\n"; } } $class = new OtherClass(); $class->myFunc(); ?> ``` #### 四、静态关键字 (Static Keyword) 在PHP中,可以使用 `static` 关键字声明类的静态成员和方法。静态成员不需要类的实例即可访问,而静态方法则可以直接通过类名调用。 **特点:** 1. **无需实例化:** 静态成员和方法可以在没有类实例的情况下访问。 2. **不可使用$this:** 静态方法中不能使用 `$this` 关键字,因为静态方法是在没有对象实例的情况下调用的。 3. **完全限定名称:** 静态方法调用时使用的是完全限定名称,即类名加上双冒号操作符。 **示例代码:** ```php <?php class Foo { public static $my_static = 'foo'; public function staticValue() { return self::$my_static; } } class Bar extends Foo { public function fooStatic() { return parent::$my_static; } } print Foo::$my_static . "\n"; // 输出 "foo" $foo = new Foo(); print $foo->staticValue() . "\n"; // 输出 "foo" print $foo->my_static . "\n"; // 产生 E_STRICT 级警告 print Bar::$my_static . "\n"; // 输出 "foo" $bar = new Bar(); ?> ``` #### 五、类常量 (Class Constants) 类常量允许在类中定义不可变的值。类常量不同于普通的类成员,它们不需要使用 `$` 符号声明,并且通常大写。 **特点:** 1. **不可修改:** 类常量一旦定义,其值就不能改变。 2. **无需实例化:** 类常量可以直接通过类名访问,不需要创建类的实例。 3. **定义方式:** 使用 `const` 关键字定义类常量。 **示例代码:** ```php <?php class MyClass { const MY_CONSTANT = 'Hello World!'; } echo MyClass::MY_CONSTANT; // 输出 "Hello World!" ?> ``` 以上是关于PHP5中面向对象编程的基础知识点总结,包括范围解析操作符、self 和 parent 关键字、方法覆盖、静态关键字以及类常量等内容。掌握这些基本概念对于深入理解和使用PHP5面向对象编程至关重要。
- 粉丝: 3
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助