博客列表 >实例演示子类的三个应用场景, 实例演示类成员的三种访问限制符的使用场景 20190330

实例演示子类的三个应用场景, 实例演示类成员的三种访问限制符的使用场景 20190330

崔泽的博客
崔泽的博客原创
2019年10月08日 12:49:42657浏览

子类的三个应用场景

实例

namespace _0930;

	class Demo11
	{
		//属性(变量)
		public $priduct;
		public $price;

		//构造方法
		public function __construct($product,$price)
		{
			$this->product=$product;
			$this->price=$price;
		}

		//方法(函数)
		public function getInfo()
		{
			return '商品名称:' . $this->product . ',商品价格:' . $this->price;
		} 
	}

运行实例 »

点击 "运行实例" 按钮查看在线实例

  1. 代码复用

实例

class sub1 extends Demo11
	{

	}
	$sub1 = new sub1('iphone 11', 8800);
	echo $sub1->getInfo() . '<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

2.功能扩展

实例

class sub2 extends Demo11
	{
		//增加一个属性
		public $num;

		//构造方法
		public function __construct($product,$price,$num)
		{
		parent::__construct($product,$price);
		$this->num=$num;
		}

		//子类中增加一个新的方法:计算总和
		public function total()
		{
			return round($this->price * $this->num,2);
		}
	}

	$sub2 = new sub2('电脑',3980.2203,8);
	echo $sub2->product . '的总价是:' . $sub2->total() . '<hr>';

运行实例 »

点击 "运行实例" 按钮查看在线实例

3.方法重写

实例

class sub3 extends sub2
	{
		//重写total()
		public function total()
		{
			$total = parent::total();
			
			//设置折扣率
	switch(true)
	{
		case($total > 20000&&$total < 40000):
		$discountRate=0.88;
		break;
		case($total >= 40000&&$total < 60000):
		$discountRate = 0.78;
		break;
		case($total >= 60000):
		$discountRate = 0.68;
		break;
		default:
		//小于或等于2000,不打折
		$discountRate=1;
	}
	//打折后的价格
	$discountprice=round($total*$discountRate,2);

	if($discountRate<1){
		$discountprice=$discountprice . '元,<span style="color:red">(' . $discountRate.'折)</span>';
	}

	//返回折扣价
	return $discountprice;
	}
	}
	$sub3 = new sub3('电脑',3800,13);
	echo '折扣价是:' . $sub3->total();

运行实例 »

点击 "运行实例" 按钮查看在线实例

类成员的三种访问限制符的使用场景

  1. public:类中、类外均可访问,子类中也可以访问

  2. protected:类中可访问,类外 不可访问,但是子类可以访问

  3. private:类中、类外都不可访问,子类也不可以访问


  4. 实例

    <?php
    namespace _0930;
    
    
    //访问控制符:public
    //public:类中,类外均可访问,子类中也可以访问
    //protected:类中可以访问,类外不可以访问,但是子类中可以访问
    //private:只允许在类中,类外访问,子类中不可访问
    
    class Demo4
    {
    	//类中成员:属性,方法
    	//成员属性,成员方法
    	//对象属性:需要使用类的实例进行访问的成员属性
    	public $name;  //姓名
    	protected $position;  //职位
    	private $salary;  //工资
    	protected $department;  //部门
    
    	//构造方法
    	public function __construct($name,$position,$salary,$department)
    	{
    		$this->name=$name;
    		$this->position=$position;
    		$this->salary=$salary;
    		$this->department=$department;
    	}
    
    	//职位访问器/方法、函数
    	public function getPosition()
    	{
    		return $this->position;
    	}
    
    	//工资访问器/方法、函数
    	public function getSalary()
    	{
    		return $this->salary;
    	}
    
    	//部门访问器/方法、函数
    	public function getDepartment()
    	{
    		return $this->department;
    	}
    }
    $obj = new Demo4('诸葛亮','法师',6600,'中路');
    echo $obj->name,'<br>';
    // echo $obj->position,'<br>';
    echo $obj->getPosition(),'<br>';
    echo $obj->getSalary(),'<br>';
    echo $obj->getDepartment(),'<br>';
    
    class Sub extends Demo4
    {
    	public function display()
    	{
    		// return $this->name;
    		// return $this->position;
    		return $this->salary;
    	}
    }
    echo '<hr>';
    $sub = new Sub('高渐离','法师',8800,'中路');
    echo $sub->display(),'<br>';
    ?>

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  5. public:类中、类外均可访问,子类中也可以访问

  6. protected:类中可访问,类外 不可访问,但是子类可以访问

  7. private:类中、类外都不可访问,子类也不可以访问

  8. 子类的应用场景:(1)、代码复用(2)、功能扩展(3)、方法重写

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议