我正在学习OO和类,我对PHP中的OO和类有几个问题
>据我所知,扩展另一个类的类只是意味着扩展另一个类的类可以访问变量/属性以及它所扩展的类的函数/方法.它是否正确?
>我知道静态方法或属性与类外的过程函数或变量基本相同,几乎可以在任何地方使用.它是否正确?
> Public表示任何类都可以访问它,Private表示仅封装的类或从可以访问和使用的所有者扩展的类.它是否正确?
解决方法:
1)是的,这是正确的.子类继承其父级的任何受保护或公共属性及方法.任何宣称私有的东西都不能使用.
2)这是事实.只要加载了类(这与以前的自动加载问题相符),就可以通过作用域解析运算符(::)访问静态方法,如下所示:ClassName :: methodName();
3)你有公共正确的含义,但正如我前面提到的,私有方法只能由它们声明的类使用.
class parentClass
{
private $x;
public $y;
}
class childClass extends parentClass
{
public function __construct() {
echo $this->x;
}
}
$z = new childClass();
上面的代码将导致触发NOTICE错误,因为childClass无法访问$x.
Notice: Undefined property:
childClass::$x
如果$x被声明为protected,那么childClass将具有访问权限.编辑:声明为protected的属性可由声明它的类以及扩展它的任何子类访问,但不能访问“外部世界”.这是公共和私人之间的一个很好的中介.