【web 开发基础】PHP面向对象中类的继承(61)
前言
继承(inheritance)是OOP中最重要的特性与概念。父类拥有其子类的公共属性和方法。子类除了拥有父类具有的公共属性和方法以外,还拥有自己独有的属性和方法。一个类可以在声明中用 extends,关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类。被继承的方法和属性可以通过用同样的名字重新声明被覆盖。但是如果父类定义方法时使用了 final,则该方法不可被覆盖。可以通过 parent:: 来访问父类被覆盖的方法或属性。当覆盖方法时,参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外,构造函数可在被覆盖时使用不同的参数。
范围解析操作符(::)
上面我们提到parent::。在前面的文章也曾介绍过,这里再捞起来说说,加深印象,因为这在实际的开发中很常用的访问操作符。范围解析操作符或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。self,parent 和 static 这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。
注:当一个子类覆盖其父类中的方法时,PHP 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数,重载以及魔术方法。
注: 属性不能被定义为 final,只有类和方法才能被定义为 final。
类的继承实例
PHP使用关键字extends来确认子类和父类,实现子类对父类的继承。具体的语法格式代码如下:
<?php
class 子类名字 extends 父类名字{
//子类成员变量列表
//....
//子类的成员方法
function 成员方法(){
//todo...
}
}
下面我们通过实例来介绍类的继承的使用方法:
<?php
class Fruit{
var $apple = "苹果";
var $banana = "香蕉";
}
class FruitType extends Fruit{
//子类的变量
var $peach = "桃子";
var $pear = "梨子";
}
//类的实例化
$fruits = new FruitType();
echo "水果包括:" . $fruits->apple . ", " . $fruits->banana . ", " . $fruits->peach . ", " . $fruits->pear;
?>
执行结果如下:
从结果可以看出,本实例创建了一个水果父类,子类通过关键字extends继承了水果父类中的成员属性,最后对子类进行实例化操作。当然类的继承的内容远不止如此,本文只是为了让初学的童鞋简单快速了解类的继承的使用。基础理论知识虽枯燥,但很有用。关于类的继承更多的内容,感兴趣的童鞋请听下回分解。
- 点赞
- 收藏
- 关注作者
评论(0)