PHP中的面向对象⑵:parent、this、self

  通过例子来学习比较轻松。

class BaseObj{
	private static $arrList=[];
	private static $ID=0;
	protected $name;
	public $aliasName;
	public function __construct(string $name){
		self::$ID=self::$ID+1;//ID自动加1
		if($name==''||$name==null){//如果不传入名称则自动添加名称
			$this->name="未命令".self::$ID;
		}else{
			$this->name=$name;
		}
		self::$arrList[self::$ID]=$this->name;//添加到控件数组
	}
	public function GetName(){//输出名称
		return $this->name;
	}
	public function GetID(){//输出ID
		return self::$ID;
	}
	public function GetArrList(){//输出控件数组
		return self::$arrList;
		// for($i=1;$i<=count(self::$arrList);$i++){
		// 	echo "ID:".$i." name:".self::$arrList[$i]."<br>";
		// }		
	}
}

class ExtObj extends BaseObj{
	public function GetArrList(){//重写父类方法
		$arr=parent::GetArrList();//执行父类方法
		for($i=1;$i<=count($arr);$i++){
			if($i==parent::GetID()){
				echo "ID:".$i." name:".$arr[$i]." -->最后生成的对象<br>";
			}elseif($arr[$i]==parent::GetName()){
				echo "ID:".$i." name:".$arr[$i]." -->当前正在输出的对象<br>";
			}else{
				echo "ID:".$i." name:".$arr[$i]."<br>";
			}
		}
	}
}


$TmpObj1=new ExtObj('第一个控件');
echo $TmpObj1->GetName();
echo "<hr/>";
$TmpObj2=new ExtObj('');
echo $TmpObj2->GetName();
echo "<hr/>";
$TmpObj3=new ExtObj('控件3');
echo $TmpObj3->GetName();
echo "<hr/>";
$TmpObj1->GetArrList();
echo "<hr/>";

  输出:

  在上面的例子中:

  1、$ID是静态私有变量,为类所有,调用方式:self::$ID

  2、$name是受保护变量,为类自身和子类所有,调用方式:$this->name
  3、调用父类方法(公用或者受保护方法),调用方式:parent::GetID()
  4、$this指对象本身,一般使用它来调用当前类的正常属性和方法;self指当前类本身,一般使用它来调用当前类的静态属性和方法;parent指当前类的父类,一般使用它调用父类的正常方法和属性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值