我正在学习有关OO和类,我有几个关于二OO PHP的问题和类
据我所知,扩展另一个类的类简单的说就是,它扩展了其他类的类访问变量/属性和功能,它是由延伸的类/方法。 它是否正确?
我知道,一个静态方法或属性是基本相同类的程序函数或变量之外,可以几乎任何地方使用。 它是否正确?
公共意味着任何类可以访问它和私人手段仅是被封装在类或从所有者扩展可以访问和使用的类。 它是否正确?
我正在学习有关OO和类,我有几个关于二OO PHP的问题和类
据我所知,扩展另一个类的类简单的说就是,它扩展了其他类的类访问变量/属性和功能,它是由延伸的类/方法。 它是否正确?
我知道,一个静态方法或属性是基本相同类的程序函数或变量之外,可以几乎任何地方使用。 它是否正确?
公共意味着任何类可以访问它和私人手段仅是被封装在类或从所有者扩展可以访问和使用的类。 它是否正确?
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();
上面的代码将导致NOTICE
错误被触发,如$ x是不是childClass访问。
注意:未定义的属性:childClass :: $ X
如果$ X被宣布protected
,而不是,然后childClass
将有机会获得。 编辑:宣布为财产protected
是通过访问声明它的类和扩展它的任何子类,而不是“外面的世界”,否则。 这是一间很好的中间public
和private
。
对于1.据我所知,扩展另一个类的类简单的说就是,它扩展了其他类的类访问变量/属性和功能,它是由延伸的类/方法。 它是否正确?
ANS:这是正确的,但还不是全部。 延伸类也可以通过重写扩展的类的方法定制扩展的类。 而且ofcouse,它也可以通过添加新的领域和方法,扩展了超类的功能。
对于2.我知道,一个静态方法或属性是基本相同类的程序函数或变量之外,可以几乎任何地方使用。 它是否正确?
ANS:是的,这是正确的,因为zombat说只要类是公众和负荷并且属性和方法是公开的。 换句话说,您使用的是类作为这些元素的命名空间。
对于3.公共意味着任何类可以访问它和私人意味着只有被封装在类或从所有者可以访问和使用扩展的类。 它是否正确?
ANS:把它看成是物理性质,公共计算机(在图书馆),每个人都可以使用,你的私人电脑(supposibly)只能由您使用。
刚刚加入到Zambat评论。
有很少需要声明的任何私有的,而是作为保护的一般规则使用。