我正在学习 OO 和类,我有几个关于 PHP 中的 OO 和类的问题
据我了解,扩展另一个类的类仅意味着扩展另一个类的类可以访问它所扩展的类的变量/属性和函数/方法。这是正确的吗?
我知道静态方法或属性基本上与类外的过程函数或变量相同,几乎可以在任何地方使用。这是正确的吗?
Public 表示任何类都可以访问它,Private 表示只有封装在其中的类或从其所有者扩展的类才能访问和使用。这是正确的吗?
最佳答案
1) 是的,没错。子类继承其父类的任何 protected
或 public
属性和方法。任何声明为 private
的东西都不能使用。
2) 这是真的。只要加载了类(这与之前的自动加载问题相得益彰),您就可以通过范围解析运算符 (::) 访问静态方法,如下所示:ClassName::methodName();
3) public
的意思是正确的,但是正如我之前提到的,private
方法只能由它们声明的类使用。
class parentClass
{
private $x;
public $y;
}
class childClass extends parentClass
{
public function __construct() {
echo $this->x;
}
}
$z = new childClass();
上面的代码将导致触发一个注意
错误,因为 $x 不能被 childClass 访问。
Notice: Undefined property: childClass::$x
如果 $x 被声明为 protected
,那么 childClass
将具有访问权限。编辑:声明为 protected
的属性可由声明它的类和任何扩展它的子类访问,但不能访问“外部世界”。它是 public
和 private
之间的一个很好的中间体。
关于php - 关于 PHP 中的 OO 和类的几个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1408848/