我有一个带有protected $instanceVariable
的抽象ParentClass。现在有一个ChildClass
,它还有一个private $instanceVariable
。它将其设置为初始值,如:
private $instanceVariable = 5;
因此子类会覆盖它并将可见性更改为private。父类不为该实例变量赋值。它也在父类中声明,因为有方法可以访问它。
这对PHP来说还不行吗?
答案 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