微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于面向对象的OO和类的几个问题

我正在学习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的属性可由声明它的类以及扩展它的任何子类访问,但不能访问“外部世界”.这是公共和私人之间的一个很好的中介.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐