首页 > 编程语言 >【web 开发】PHP面向对象中类的继承

【web 开发】PHP面向对象中类的继承

时间:2023-06-07 23:01:09浏览次数:37  
标签:web PHP 继承 子类 父类 方法 中类 属性

前言

继承(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;
?>

执行结果如下:

【web 开发】PHP面向对象中类的继承_类的继承

从结果可以看出,本实例创建了一个水果父类,子类通过关键字extends继承了水果父类中的成员属性,最后对子类进行实例化操作。当然类的继承的内容远不止如此,本文只是为了让初学的童鞋简单快速了解类的继承的使用。基础理论知识虽枯燥,但很有用。关于类的继承更多的内容,感兴趣的童鞋请听下回分解。

标签:web,PHP,继承,子类,父类,方法,中类,属性
From: https://blog.51cto.com/micai01/6436203

相关文章

  • PHP Xdebug 3 和 Visual Studio Code
    Xdebug3相对于Xdebug2改动挺大的。在php.ini里下面的设置就够了,不需要多余的。默认调试端口9003 [XDebug]zend_extension="php_xdebug.dll"xdebug.mode=debugxdebug.start_with_request=yesxdebug.idekey=VSCODEhttps://community.localwp.com/t/local-xdebu......
  • 5_How to install phpMyAdmin on Ubuntu_
     地址:https://www.codewithharry.com/blogpost/install-phpmyadmin-ubuntu/    InstallingphpMyAdminandaddingpasswordauthenticationtoMySQLonUbuntuInthisvideo,wewillseehowtoinstallandsecurephpMyAdminonUbuntu20.04.phpMyAdminwasc......
  • 9_How to install phpMyAdmin on Nginx (in 5 minutes)
     地址:https://www.codewithharry.com/blogpost/install-phpmyadmin-ubuntu-nginx/  HowtoinstallPhpMyAdminonUbunturunningNginx(LEMPstack)Inthispost,wewillseehowtoinstallphpMyAdminonserversrunningNginx.Followthestepsbelow:Step1-......
  • 3_Installing Linux, Apache, MySQL, PHP (LAMP) Stack on Ubuntu 20.04
      地址:https://www.codewithharry.com/blogpost/lamp-stack-ubuntu-20-04/ InstallingLAMPstackonUbuntu20.04in5MinutesThispostwillexplainhowtoinstallLAMPstackonUbuntu20.04.LAMPstackconsistsofthefollowingcomponents:Linux-AnyLi......
  • 4_How to Host Multiple Websites on One Server
     地址:https://www.codewithharry.com/blogpost/host-multiple-websites-ubuntu-vps/  HowtoHostMultipleWebsitesonUbuntuVPS?Anapache2webserverprovidesrobustnessandscalabilityforhostingmultiplewebsitesonyourUbuntuVPS.Thismeansyoucan......
  • #yyds干货盘点#HCL防火墙WEB方式登录配置
    HCL防火墙WEB方式登录配置ComwareV5防火墙中存在区域优先级的概念,以及默认区域互访策略,即高优先级安全区域可以访问低优先级,低优先级区域不能访问高优先级区域,相同优先级区域可以互访,所有区域都可以访问local区域。出于安全性的考虑,ComwareV7摒弃了V5中区域优先级的概念以及默认......
  • WEB漏洞—文件上传基础及过滤方式
    思维导图利用思路什么是文件上传漏洞?存在文件上传的地方,就有可能存在文件上传漏洞。是否存在漏洞,需要去判断进行文件上传操作的时候的代码是否比较完整和安全,疏忽某个地方就可能造成文件上传漏洞。 文件上传漏洞有什么危害?可以自由上传文件,例如上传一个后门文件,如果上传......
  • Web前端开发技术
    一、选择1.html结构样式:行内、块常见元素,按常见元素,滚动文字行内元素:a、span、img、input、label、select、textarea、button、abbr、acronym、cite、code、dfn、em、kbd、q、samp、strong、sub、sup、time、var等;块状元素:div、p、h1~h6、ul、ol、li、dl、dt、dd、blockquote......
  • 软件测试工程师面试——Web端测试
     ......
  • Webpack 插件实现 CSS 样式尺寸单位转换
    Webpack插件实现CSS样式尺寸单位转换实现方式一插件代码以下是编写的一个Webpack插件,用于将样式文件中以rpx为单位的值转换为以px为单位的值(换算比率为1px=2rpx):constpluginName="CssSzieConvertPlugin";classCssSzieConvertPlugin{apply(compiler){......