在子类中定义一个属性,然后在父类中使用它,这在PHP中是一种奇怪的行为

本文关键字:PHP 一种 这在 父类 定义 子类 一个 属性 然后 | 更新日期: 2023-09-27 18:29:41

在PHP中,我在子类中定义了一个名为$table_name的属性,然后在父类中,我可以使用这个属性:

class A{
public function getTable(){
    return $this->table_name;
}
}
class B extends A{
protected $table_name='admin;
}

这在Java或C++中可能实现吗?我只是想知道这是一个很好的OOP实践,还是在PHP中可行,因为PHP是一种解释语言。

更新:直到我发现MVC框架使用它,我才意识到这在PHP中是可能的!当我学习Java时,我不记得这样的事情,所以我认为这可能值得讨论。

在子类中定义一个属性,然后在父类中使用它,这在PHP中是一种奇怪的行为

OOP的要点之一是多态性和使用派生类的能力。这背后的想法是,您可以访问基类中的基属性,并依赖于它们在任何派生类中的存在。

做上面已经证明的事情打破了这一点。它本质上意味着基类对于它的派生类之外的任何东西都是无用的,应该避免这种行为。

因此:您可以从派生类访问基本属性,而不是从其他类访问。

简短版本:这是一种糟糕的OOP实践。