php继承用引入父类吗

php继承用引入父类吗

php中类与继承

在php中,类型的继承使用extends关键字,而且最多只能继承一个父类,php不支持多继承。

class MyClass  {  public $dat = 0;  public function __construct($dat) {   $this->dat = $dat;  }  public function getDat() {   return "$this->dat";  } } class MySubClass extends MyClass {  public function getDat() {   return "dat: $this->dat";  } } $a = new MyClass(3); $b = new MySubClass(4); echo $a->getDat();  // 3 echo $b->getDat();  // dat: 4

登录后复制

方法覆盖

包括构造函数在内,子类可以重新定义同名的类方法以覆盖父类方法。覆盖时遵循以下规则:

1.除构造函数之外,其他函数在覆盖时,函数的参数列表必须相同

立即学习“PHP免费学习笔记(深入)”;

2.包括构造函数在内,方法被覆盖后,调用子类方法时并不会自动调用父类方法

3.如果父类要禁止方法被子类覆盖,可以使用final来声明方法,这时如果子类仍要覆盖父类方法,将会出错

class MyClass  {  private $name = "";  public $num = 0;  public $str = "";  public function __construct($name) {   $this->name = $name;   $this->num = 100;   $this->str = "none";  }  public function getName() {   return $this->name;  } } class MySubClass extends MyClass {  public function __construct($name, $str) {   parent::__construct($name);    // 调用父类方法   $this->num = "0";   $this->str = $str;   echo parent::getName()."";    // 调用父类方法  }  public function getName() {   return parent::getName()."$this->str"; // 调用父类方法  } } $b = new MySubClass("myName", true);  // myName echo $b->getName();          // myName1 class MyClass  {  final public function getName() {  } }

登录后复制

属性重定义

class MyClass  {  public $a = 1;  protected $b = 2;  private $c = 3;  public function f1() {   echo "MyClass f1";   echo "$a:$this->a; $b:$this->b; $c:$this->c;";  }  protected function f2() {   echo "MyClass f2";   echo "$a:$this->a; $b:$this->b; $c:$this->c;";  }  private function f3() {   echo "MyClass f3";  } } class MySubClass extends MyClass  {  public $b = 22;  public $c = 33;  public function f1() {   echo "MySubClass f1";   // 继承到父类中的$a属性,直接使用   echo "$a:$this->a; $b:$this->b; $c:$this->c;";   // 调用父类中的同名方法   parent::f1();   // 继承到父类中的f2()方法,直接使用   $this->f2();  }  // 父类的f3()是私有的,这里的定义与父类无关  public function f3() {   echo "MySubClass f3";  } } $b = new MySubClass; $b->f1();echo ""; /* MySubClass f1 $a:1; $b:22; $c:33; MyClass f1 $a:1; $b:22; $c:3; MyClass f2 $a:1; $b:22; $c:3; */ $b->f3();echo ""; /* MySubClass f3 */

登录后复制

重定义父类(同名)属性时,属性的可访问性可以变得更开放,但不能更严格,也就是说,父类中的public属性,不能在子类中修改为private属性。

如果通过子类对象调用父类方法,那么该父类方法在访问属性时,对于重定义了的同名属性,public和protected的属性将访问到子类版本,private属性将访问到父类版本。也可以理解为,public和protected属性可以被重定义(父类的版本被重定义,从而不存在了),而private并未被重定义(父类中的属性仍然存在,通过父类方法进行访问,与子类中是否有同名属性毫不相干)。

final关键字

声明为final的方法不能被子类覆盖,如果类声明为final,则此类不能被继承。

// 声明为final的类不能被继承 final class MyClass {  private $dat;  public function __construct($dat) {   $this->dat = $dat;  }  // final方法不能被覆盖,不过此类已经是final类,方法无必要在声明为final了  final public function getDat() {   return $this->dat;  } }

登录后复制

推荐教程:PHP视频教程

以上就是php继承用引入父类吗的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2525236.html

(0)
上一篇 2025年3月5日 18:06:03
下一篇 2025年3月2日 17:05:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php加密的文件怎么解密

    php加密的文件解密方法 我们知道对PHP代码加密有真加密与伪加密两种,真加密一般要通过运行PHP ext(一般用C实现)代码来加载PHP文件进行解码,要对这种文件解密,必须自己编译PHP解释器的源代码,通过Hook PHP解释器的解码函数…

    2025年3月5日
    200
  • php加密后可以直接运行吗

    加密后的php代码需要zendguardloader模块才能正常运行 下载ZendGuardLoader压缩包 下载好后解压压缩包,找到目录下的 ZendLoader.dll 文件,将它放到你的php目录下ext下,再编辑php.ini文件…

    2025年3月5日
    200
  • php加载html乱码

    php与html交互出现乱码 HTML部分 如果是html在head中添加: 登录后复制登录后复制 如果是html5: 登录后复制登录后复制 PHP部分 立即学习“PHP免费学习笔记(深入)”; 如果是在和html混排时建议在脚本首行添加:…

    2025年3月5日
    200
  • PHP检测是否是json

    php判断是否是json格式的方法 首先要记住json_encode返回的是字符串, 而json_decode返回的是对象 判断数据不是JSON格式: function is_not_json($str){     return is_nu…

    2025年3月5日
    200
  • PHP脚本主要用于哪些领域?

    php脚本主要应用领域 1、服务端脚本 这是 PHP 最传统,也是最主要的目标领域。 开展这项工作需要具备以下三点:PHP 解析器(CGI 或者服务器模块)、web 服务器和 web 浏览器。 需要在运行 web 服务器时,安装并配置 PH…

    2025年3月5日
    200
  • php数据库导出sql文件

    php数据库导出sql文件 php将mysql数据库整库导出生成sql文件的详细代码。 文件名:db_backup.php 源代码: <?php ini_set("max_execution_time", &quo…

    2025年3月5日
    200
  • php图片写文字方法

    php图片写文字也就是相当于给图片加文字水印,而一般上传图片时,水印一般为文字或图片logo水印,下面就来看看两种添加方法。 一、文字水印 文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件。 $ds…

    2025年3月5日
    200
  • php写html怎么换行

    浏览器识别不了或,这两个换行符是文本换行符,对文本文件有效;在网页中查看html源代码可以发现代码b成功实现了换行。 相关推荐:《php入门教程》 代码a: <?php echo'hello’;echo’world!’;?&…

    2025年3月5日
    200
  • php判断网站是否可以访问

    php支持的由daniel stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。 libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。li…

    2025年3月5日
    200
  • php用什么部署

    php用什么部署? php可以用phpStorm将本地PHP项目部署到apche服务器上: 1.这是我本地的简单php项目。其中 D:httpd-2.4.35-win64-VC15Apache24htdocs为apache服务器会扫描项目的…

    2025年3月5日 编程技术
    200

发表回复

登录后才能评论