PHP类访问控制修饰符
2018-02-22 16:40 更新
PHP教程 - PHP类访问控制修饰符
访问控制修饰符可以放在类之前,方法定义或属性来改变PHP对待它们的方式。
访问控制修饰符列表
访问修饰符 | 含义 |
---|---|
Public | 将属性或方法设置为可从任何地方访问 |
Private | 将属性或方法设置为只能由其自己的类或对象访问 |
Protected | 将属性或方法设置为可由其类或其后代访问 |
Final | Set属性,方法或类不能在子类中重写 |
Abstract | Set方法或类不能直接使用。 我们必须子类化它。 |
类中的大多数变量应标记为保护或私人。
上市
公共属性和方法可以从任何地方访问。
<?PHP/*w w w .j av a 2 s . co m*/
class Book {
public $Name;
public function say() {
print "PHP!\n";
}
}
class PythonBook extends Book {
public function say() {
print "Python!\n";
}
}
$aBook = new PythonBook;
$aBook->Name = "Python";
print $aBook->Name;
?>
默认情况下,所有类方法都是public的。
上面的代码生成以下结果。
私人的
私有属性只能在自己的类中访问。
<?PHP
class Book {
private $Name;
private $NameTag;
public function setName($NewName) {
// etc
}
}
?>
子类无法访问私有父方法和属性。如果你想这样做,你需要protected关键字。
保护
受保护的属性和方法可在其自己的类和子类中访问。考虑下面的代码:
<?PHP//from w w w.j a v a 2 s . co m
class Book {
public $Name;
protected function getName() {
return $this->Name;
}
}
class Poodle extends Book {
public function say() {
print ""Book", says " . $this->getName();
}
}
$aBook = new Poodle;
$aBook->Name = "PHP";
$aBook->say();
?>
上面的代码生成以下结果。
例子
下面的代码显示了如何使用Private成员隐藏信息。
//from w w w. ja va 2s . c o m
<?php
class Widget
{
private $name;
private $price;
private $id;
public function __construct($name, $price)
{
$this->name = $name;
$this->price = floatval($price);
$this->id = uniqid();
}
//checks if two widgets are the same
public function equals($widget)
{
return(($this->name == $widget->name) AND
($this->price == $widget->price));
}
}
$w1 = new Widget("Cog", 5.00);
$w2 = new Widget("Cog", 5.00);
$w3 = new Widget("Gear", 7.00);
//TRUE
if($w1->equals($w2))
{
print("w1 and w2 are the same<br>\n");
}
//FALSE
if($w1->equals($w3))
{
print("w1 and w3 are the same<br>\n");
}
//FALSE, == includes id in comparison
if($w1 == $w2)
{
print("w1 and w2 are the same<br>\n");
}
?>
上面的代码生成以下结果。
以上内容是否对您有帮助:
← PHP抽象类
更多建议: