我在扩展一个自身进一步扩展抽象类的类时遇到了问题。
基本抽象类具有以下方法:
摘要:
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对象?
答案 0 :(得分:3)
您收到的错误是由于您将Abstract超类中的construct()函数声明为final,这意味着您无法覆盖它。删除它,应该没有问题。
旁注:使用继承时使用protected会更安全。除非你完全确定你的子课程不需要字段/功能。