什么时候以及为什么要在类中使用public
,private
和protected
函数以及变量?它们之间有什么区别?
例子:
// Public
public $variable;
public function doSomething() {
// ...
}
// Private
private $variable;
private function doSomething() {
// ...
}
// Protected
protected $variable;
protected function doSomething() {
// ...
}
你用:
public
范围,以使该属性/方法可从任何位置,对象的其他类和实例使用。
private
当你希望你的属性/方法仅在其自己的类中可见时。
protected
要使属性/方法在扩展当前类的所有类(包括父类)中可见时显示范围。
如果你不使用任何可见性修饰符,则该属性/方法将是公共的。
更多:(有关全面信息)
protected
要在所有扩展当前类及其父类的类中使变量/函数可见时的作用域。@Shahid-我不明白你的意思。任何扩展了A类的类也扩展了A的父类,不是吗?
@JDelage-请参阅链接
http://www.php.net/manual/en/language.oop5.visibility.php#109324
@Growler为什么那么麻烦使用对象呢?
@Growler,一个更有用的答案是,尽可能多地隐藏对象的内部工作是很好的。这样,它破裂的可能性就较小。如果将所有内容公开,则另一个程序员可能会更改一个变量,除了对象的内部工作方式之外,您不希望更改该变量。