类的方法作用域

PHP支持6种作用域:public、private、protected、abstract、final 和 static。


public

公共方法可以在任何位置任何时间访问。在方法前面加上关键字public,或不加任何关键字,都可以声明一个公共方法。

Private

标记为private的方法只能在类的内部使用,不能由实例化的对象调用,也不能由类的子类使用。
如果某些方法只用作为类中其他方法的“助手”(即辅助方法),就应当标记为私有。
从实例化的对象中调用此方法将导致致命的错误。

protected

标记为protected的方法只能在该类以及其子类中使用。
这些方法可用来帮助类或子类完成内部计算。
例如,在获取某个员工信息之前,可能希望验证员工身份证号(EIN),它将作为参数传递到类的实例化方法(即构造函数)中。我们使用verifyEIN()方法验证此ein在语法上是否正确。因为这个方法只能用于类中的其他方法,对于派生自Employee的类也可能有用,所以应当声明为protected:
<?php  
	class Employee{
		private $ein;
		function __construct($ein){
			if($this->verifyEIN($ein)){
				echo "EIN verifyied . Finish";
			}
		}

		protected function verifyEIN($ein){
			return TURE;
		}
	}

	$employee = new Employee("13456789");
	
?>
试图从类外部调用verifyEIN()将导致致命错误,因为该方法具有保护作用域。


abstract(待深入)

abstract方法很特殊,只在父类中声明,但在子类中实现。
只有声明abstract的类才可以声明抽象方法。
如果想定义一个应用程序接口(API),以后将它作为实现一个模型,就可以声明一个抽象方法。
开发人员会知道,如果能满足抽象方法定义的所有需求,那么他为该方法开发的特定实现应该能正常工作。

抽象方法声明如下:
abstract function methodName();

假设要创建一个抽象Employee类,它要作为其他一些员工类型(经理、职员、出纳等)的基类:
<?php  
	abstract class Employee{
		abstract function hire();
		abstract function fire();
		abstract function promote();
		abstract demote();
	}
?>
然后,各个员工类(如经理、职员和出纳)再分别扩展这个类。


final

标记为final的方法可以防止被子类覆盖。声明方法如下:
<?php  
	class Employee{
		final function getName(){
		}
	}
?>
以后如果试图覆盖final方法将导致致命的错误。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值