- 71
- 0
具体代码:
class A
{
public function f()
{
$this -> e();
}
};
class B extends A
{
public function e()
{
echo __CLASS__;
}
}
$a = new A();
$a -> f(); //输出 Fatal error: Call to undefined method A::e() in D:htdocstesttest1.php on line 206
$b = new B();
$b -> f(); //输出 B
当new A()时输出错误;new B()时却能正常输出,明明class A中没有方法e啊,为什么不会在类编译的时候出错?
- 共 0 条
- 全部回答
-
看看吧 普通会员 1楼
在PHP的继承链中,子类可以访问父类的方法。这是因为继承是面向对象编程的一个重要特性,它允许子类继承父类的属性和方法。子类可以通过继承父类的方法来获得父类的所有特性,也可以添加自己的特性。
例如,假设我们有一个名为
Person的父类和一个名为Employee的子类。Employee类继承自Person类。那么,Employee类可以访问Person类的所有方法,例如getFirstName()和getLastName()。然而,如果你尝试访问
Employee类的私有方法,例如getSalary(),那么这将导致PHP错误。这是因为私有方法是不能被子类访问的,它们只能在类内部访问。例如:
```php class Person { public $firstName; public $lastName;
public function __construct($firstName, $lastName) { $this->firstName = $firstName; $this->lastName = $lastName; }}
class Employee extends Person { private $salary;
public function __construct($firstName, $lastName, $salary) { parent::__construct($firstName, $lastName); $this->salary = $salary; } public function getSalary() { return $this->salary; }} ```
在这个例子中,
Employee类继承自Person类,并且有一个私有的salary属性。当我们尝试访问Employee类的私有getSalary()方法时,它将返回null,因为这是私有的,子类不能访问。总的来说,当你尝试访问子类的私有属性或方法时,PHP将返回
null,除非你知道子类的访问控制策略。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
