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

php的继承

发布时间: 2023-05-20 16:34:55

1. php继承一个父类,如何自动执行父类方法

你在父类写一个成员函数 然后子类继承 创建子类对象的时候 可以点出来父类的成员函数


比如

Student zs = new Student();

zs.SayHello() //点出来的是从父类的继承来的成员函数

输出结果为父类的->我是人类

publicclassPerson
{
publicvoidSayHello()//这只是父类的SayHello
{
echo"我是人类";
}
}

publicclassStudent:Person//已经继承了Person父类
{
//我什么都没写
}


2. php继承问题

这个问题有意思 .

我觉得大家可能没明白楼主的意思,private 不能被继承,这个我想没什么争议。

楼主在 A 中定义了一个 private 和 protect ,B 继承 A ,但为空类,按理说 A 中的 private $priv 不会被 B 继承,但为何在创建对象 $b = new B("b_1", "b_2"); $priv 却能被赋值并且在后面有输出?按理说 B 类中不应该有 $priv 啊?就算函数被重载了,但哪来的 $priv 变量呢?如果说是引用了父类中的 $priv ,那为何不见 parent::$priv 这样的形式呢?

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

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

4. php子类可以继承和访问父类的私有属性和方法吗

你这样理解也可以,当父类有私有的方法和属性,子类是继承不到的,所以子类不能访问父类的私有方法和属性。java
特性,private:类中只要限定为private的成员,只能被这个类本身访问

5. 请教高手PHP中一个类怎样继承多个类

一般只能继承一个类,不过你可以让他们连起来,比如你的a类要继承b,c,d类,可以让c继承b类,d继承c类,然后a继承d类

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()魔术方法来模拟属性的继承。请你动手实践。

热点内容
小鸟云如何去看客户服务器密码 发布:2025-05-20 07:58:51 浏览:898
怎么更改app的密码 发布:2025-05-20 07:54:32 浏览:784
汽车配置物品怎么处理 发布:2025-05-20 07:47:23 浏览:225
怎么修改华为wifi密码 发布:2025-05-20 07:45:12 浏览:41
php函数递归 发布:2025-05-20 07:39:36 浏览:781
登陆认证失败请检查服务器地址 发布:2025-05-20 07:06:55 浏览:831
无限分类实现php 发布:2025-05-20 06:57:40 浏览:681
数据结构c语言版严蔚敏李冬梅 发布:2025-05-20 06:55:05 浏览:449
iphone快捷访问 发布:2025-05-20 06:55:05 浏览:929
如何加密硬盘分区 发布:2025-05-20 06:52:29 浏览:363