扩展课程的问题

时间:2010-10-29 08:53:20

标签: php inheritance abstract-class

我在扩展一个自身进一步扩展抽象类的类时遇到了问题。

基本抽象类具有以下方法:

摘要:

private final __construct()
abstract protected function loadFromId()
private static final load($id)

Class 1扩展Abstract:

protected loadFromId()

第2类扩展了第1类:

//nothing as of yet

我从Class 2扩展Class 1的原因是因为我需要它来返回Class 1的实例。类2将基本返回一个null对象以进行验证。

如果我尝试扩展Class 1:

Class 2 extends Class 1 { }

我收到以下错误“Cannot override final method class::__construct()”,显然是因为它是私有方法。

有没有办法可以根据Class 1创建一个null对象?

1 个答案:

答案 0 :(得分:3)

您收到的错误是由于您将Abstract超类中的construct()函数声明为final,这意味着您无法覆盖它。删除它,应该没有问题。

旁注:使用继承时使用protected会更安全。除非你完全确定你的子课程不需要字段/功能。