php面向对象(OOP 编程)- 类访问修饰符

类型的访问修饰符允许开发人员对类成员的访问进行限制,这是PHP5的新特性


private
protected public
同一个类中
类的子类中  
所有的外部成员    

<?php
/**
 * 类属性访问控制
 * Define MyClass
 */
class MyClass
{
	public $public = 'Public';
	protected $protected = 'Protected';
	private $private = 'Private';

	function printHello()
	{
		echo $this->public;
		echo $this->protected;
		echo $this->private;
	}
}

$obj = new MyClass();
echo $obj->public;		// Works
echo $obj->protected;	// Fatal Error
echo $obj->private;		// Fatal Error
$obj->printHello();		// Shows Public, Protected and Private

/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
	// We can redeclare the public and protected method, but not private
	protected $protected = 'Protected2';

	function printHello()
	{
		echo $this->public;
		echo $this->protected;
		echo $this->private;
	}
}

$obj2 = new MyClass2();
echo $obj->public;		// Works
echo $obj2->private;	// Undefined
echo $obj2->protected;	// Fatal Error
$obj2->printHello();	// Shows Public, Protected2, not Private
?>



<?php
/**
 * 类方法访问控制
 * Define MyClass
 */
class MyClass
{
	// Contructors must be public
	public function __construct() { }
	// Declare a public method
	public function MyPublic() { }
	// Declare a protected method
	protected function MyProtected() { }
       //abstract protected function funProtect($param);抽象方法只能在抽象类中定义
	// Declare a private method
	private function MyPrivate() { }
    	// This is public
	function Foo()
	{
		$this->MyPublic();
		$this->MyProtected();
		$this->MyPrivate();
	}
}

$myclass = new MyClass;
$myclass->MyPublic();		// Works
$myclass->MyProtected();	// Fatal Error
$myclass->MyPrivate();		// Fatal Error
$myclass->Foo();			// Public, Protected and Private work

/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
	// This is public
	function Foo2()
	{
		$this->MyPublic();
		$this->MyProtected();
		$this->MyPrivate();		// Fatal Error
	}
}

$myclass2 = new MyClass2;
$myclass2->MyPublic();	// Works
$myclass2->Foo2();		// Public and Protected work, not Private
?>




转载于:https://my.oschina.net/u/347414/blog/667749

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值