第八段存取8

PHP5的访问模式允许类成员的访问限制。这是PHP5中的新功能,但在许多面向对象语言都长。访问,以开发可靠的面向对象的应用程序,并构建面向对象的可重用类库。

像C++和java,PHP有三种接入方式:公共、私有和保护。对于类成员的访问,可以是其中之一。如果不指定默认访问方法,则为公共访问方法。您还可以指定静态成员的访问方法,将访问静态关键字之前的方式(如公共静态)。

可以无限制地访问公共成员。类以外的任何代码都可以对公共属性进行读写。可以从公共脚本调用任何地方。在PHP以前的版本中,所有的方法和属性都是公共的,这使人们感觉到数组的对象和精细结构。

私有(私有)成员只在类中可见。无法更改或读取私有属性类中的值。类似地,只能在同一类方法中调用私有方法。继承子类不能访问父类中的成员。

请注意,任何类成员的实例都可以访问私有成员。例子6.8,equals方法比较两部件= =运算符是同一类的对象,但是在这个例子中,每个对象都是私有属性id.equals方法实例仅是名称和价格。等于如何访问小部件的另一个实例。java和c都允许这样的操作。

清单6.8私人成员




类控件
{
私有名称;
私人价格;
私人身份证;

公共功能__construct($name,美元价格)
{
这个名字;
美元->价格= floatval(美元价格);
美元-> ID = uniqid();
}
检查两个小部件是否相同,检查两个小部件是否相同。
公共函数等于($小部件)
{
返回(
($ > >价格=小部件-价格>);
}
}
$ W1 =新部件('cog ',5);
$ W2 =新的小工具('cog ',5);
W3 =新的部件('gear美元,7);

/真
如果($ W1 ->等于($ W2))
{
打印(W1和W2是相同的

}

/ false
如果($ W1 ->等于($ W3))
{
打印(W1、W3是相同的

}

在比较中,id包括
如果($ W1 = = $ W2)从文件: / /,因为身份是不同的
{
打印(W1和W2是相同的

}
>

子类可以改变通过重写父类的方法访问,改变方法,但仍存在一定的局限性。如果覆盖类公共成员,则公开子类。如果覆盖了受保护的成员,它必须保持,它可以保留受保护的或成为公共的。私有成员仍然可见。只在当前类中。在当前类语句中,具有相同名称的类成员的父亲和私有成员将仅创建与原始成员不同的成员。因此,从技术上讲,您不能覆盖私有成员。

最后关键字是限制对成员方法的访问的另一种方法。子类不能覆盖在父类中被确定为最终的方式。属性不能使用最终关键字。

/ / haohappy注:PHP5面向对象的模型还不够完善,比如最后,不像java,数据,方法,甚至可以使用。