通过继承重新声明或覆盖实例变量是否有效?

时间:2010-01-04 17:08:01

标签: php

我有一个带有protected $instanceVariable的抽象ParentClass。现在有一个ChildClass,它还有一个private $instanceVariable。它将其设置为初始值,如:

private $instanceVariable = 5;

因此子类会覆盖它并将可见性更改为private。父类不为该实例变量赋值。它也在父类中声明,因为有方法可以访问它。

这对PHP来说还不行吗?

2 个答案:

答案 0 :(得分:1)

你打破了Liskov Substitution Principle - 我应该能够从ChildClass安全继承,因为我知道我的GrandChild类可以像处理ParentClass一样对待ChildClass。那就是GrandChild应该能够访问受保护的$ instanceVariable。

答案 1 :(得分:1)

php不会让你声明这样的成员,你会收到如下错误:

Access level to d::$x must be protected (as in class c) or weaker