当前位置:首页 » 编程语言 » php类继承

php类继承

发布时间: 2022-04-06 21:34:31

1. php一个类文件如何继承另一个类文件

include_once("a.php");
classbextendsa{
}

2. php类继承,方法不能继承

你的$name是私有的,无法继承,要protected才能继承

3. PHP extends继承多个类怎么写

php和java一样,只能单继承,想实现多继承只能通过实现多个接口去实现

4. 关于PHP继承抽象类 和 继承普通类 有什么区别

抽象类中必须包含一个抽象方法,只能交给他的继承类重写实现,比如你上面那个抽象类,继承他的类必须要有一个kx方法。而下面那个普通类的继承类可以没有kx方法。这样的好处就是统一性,比如我们要有一个数据库操作类,我们可能用来操作mysql,也可能操作oracle,但是他们都会有一些共同的方法,这样我们通过一个抽象类来统一方法、参数,mysql类和oracle类都来继承这个抽象类,这样,以后我们,操作mysql就实例mysql类,操作oracle就实例oracle类,但是不管是操作mysql和oracle都可以使用同样的方法和参数(这只是一个比方,系统有提供数据库抽象层如PDO供我们使用)。当然你也可以说继承普通类也可以统一方法参数,确实是可以,但是如果继承者没有统一方法也不会报错。而使用抽象类就硬性规定了必须要重写方法否则出错。

5. 细说php 抽象类能不能被继承 php

当然可以。
它的作用就是规定好方法,让别人继承来实现方法,这是一种代码管理手段。
抽象类的方法,没有方法体,继承该抽象类的类必须实现所有抽象类定义的类。

6. php中的类是单继承,那要有多个类继承怎么办

PHP没有多继承的特性。即使是一门支持多继承的编程语言,我们也很少会使用这个特性。在大多数人看来,多继承不是一种好的设计方法。想要给某个类添加额外的特性,不一定要使用继承。这里我提供一种模拟多继承的方法以供参考。


PHP有一个魔术方法,叫做__call。当你调用一个不存在的方法时,这个方法会被自动调用。这时,我们就有机会将调用重定向到一个存在的方法。继承多个父类的子类,寻找方法的过程一般是这样的:

本身的方法 -> 父类1的方法 -> 父类2的方法...


模拟过程大致是这样:将各个父类实例化,然后作为子类的属性。这些父类提供一些公有的方法。当子类拥有某方法时,__call()函数不会被调用。这相当于“覆盖”了父类的方法。当调用了不存在的方法时,通过__call()方法依次从父类中寻找可以调用的方法。虽然这不是完备的多继承,但可以帮助我们解决问题。


<?php
classParent1{
functionmethod1(){}
functionmethod2(){}
}
classParent2{
functionmethod3(){}
functionmethod4(){}
}
classChild{
protected$_parents=array();
publicfunctionChild(array$parents=array()){
$_parents=$parents;
}

publicfunction__call($method,$args){
//从“父类"中查找方法
foreach($this->_parentsas$p){
if(is_callable(array($p,$method))){
returncall_user_func_array(array($p,$method),$args);
}
}
//恢复默认的行为,会引发一个方法不存在的致命错误
returncall_user_func_array(array($this,$method),$args);
}
}
$obj=newChild(array(newParent1(),newParent2()));
$obj->method1();
$obj->method3();

这里没有涉及属性的继承,但实现起来并不困难。可以通过__set()和__get()魔术方法来模拟属性的继承。请你动手实践。

7. 在php中,子类extends继承了父类,当子类和父类同时存在构造函数__construct先执行哪一个呢

1、如果父类和子类中都没有显式的定义__construct,在实例化子类对象时,只会隐含的调用子类自己的构造方法。

2、如果父类中有显式的构造方法__construct,而子类中没有定义__construct,在实例化子类对象时,就会调用父类中的构造方法。

3、如果父类和子类中都显式的定义了__construct,在实例化子类对象时,只会调用子类自己的构造方法(这就像是子类重构了父类的构造方法),而如果也想要调用父类的构造方法的话,就需要在子类的__construct 方法中显式的调用,(如 __construct(){ parent::_construct();})。


(7)php类继承扩展阅读

子类的构造函数名与子类名相同。

在子类里父类的构造函数不会自动执行。

要在子类里执行父类的构造函数,必须执行类似以下语句:

$this->[父类的构造函数名()]

类的构造函数统一命名为__construct()。

子类的构造函数名也是__construct()(也是废话)。

在子类里父类的构造函数会不会执行,分两种情况:

1、如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。

2、如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。

这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:parent::__construct();

8. php中静态类的继承

楼主这个问题跟静态没有多大关系,主要是继承的概念没有搞清楚,继承一个类是将子类拥有了调用父类的方法和属性的权利,并不是说将父类的方法复制到了子类中self方法相当于当前类的指针,你那样调用相当于写了
public static function test() {
parent::who();
}
这样的代码,所以才会出现那样的结果

9. php 继承一个类一定要引用一下吗

php有自动加载类的功能,但是需要遵循一定的规则,并且需要额外的代码支持实现。

对于你说的问题,较常见的情况是b.php里面虽然没有引用a.php,但是c.php可能引用了a.php及b.php。只要在一个php进程中保证引用了这些文件就行,引用位置是可变的。例如在第一行引用和在第二行引用没有区别,只要在new之前引用过就好了。但是明显这不是值得推荐的。

10. php中类的继承是通过哪个关键字来实现的

php类有三种:
普通写的class 类 用extends来继承
抽象类abstract类 也是用extends来继承
接口类interface类用的是implements来继承的

热点内容
安卓鸿蒙苹果哪个好用 发布:2025-01-19 10:32:33 浏览:264
正规物业保安怎么配置 发布:2025-01-19 10:27:30 浏览:518
断裂下载ftp 发布:2025-01-19 10:27:30 浏览:641
安卓导航怎么调对比度 发布:2025-01-19 10:26:52 浏览:25
服务器共享文件如何查看访问记录 发布:2025-01-19 10:08:55 浏览:400
datasourceSQL 发布:2025-01-19 10:01:25 浏览:838
aspnet网站的编译 发布:2025-01-19 10:00:49 浏览:334
路特仕A9工厂密码是多少 发布:2025-01-19 09:59:44 浏览:257
linux的命令find 发布:2025-01-19 09:42:55 浏览:174
简单的计算机编程 发布:2025-01-19 09:39:54 浏览:520