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

时间:2014-11-09 10:25:49

标签: java c# php c++ oop

在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框架使用它!当我学习Java时,我不记得这样的事情,所以我认为它可能值得讨论。

1 个答案:

答案 0 :(得分:0)

OOP的一个要点是多态性和使用派生类的能力。这背后的想法是你可以访问基本属性(在基类中)并依赖它们在任何派生类中。

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

所以:你从派生类访问基本属性,而不是相反。

简短版:这是糟糕的OOP练习。