【web 开发基础】PHP面向对象中类的继承(61)

举报
迷彩 发表于 2023/07/23 00:44:09 2023/07/23
【摘要】 前言继承(inheritance)是OOP中最重要的特性与概念。父类拥有其子类的公共属性和方法。子类除了拥有父类具有的公共属性和方法以外,还拥有自己独有的属性和方法。一个类可以在声明中用 extends,关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类。被继承的方法和属性可以通过用同样的名字重新声明被覆盖。但是如果父类定义方法时使用了 final,则该方法不可被覆...

前言

继承(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继承了水果父类中的成员属性,最后对子类进行实例化操作。当然类的继承的内容远不止如此,本文只是为了让初学的童鞋简单快速了解类的继承的使用。基础理论知识虽枯燥,但很有用。关于类的继承更多的内容,感兴趣的童鞋请听下回分解。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。