PHP面向对象~属性案例

class employee{
	    protected  $sal=3000;    
	    public function getSal(){
	        $this->sal = $this->sal + 1200;    
	         $salary = $this->sal;  

	        return $salary;
	    }  
	}
	 
	class Manager extends employee {
	    // protected  $sal=3001;  
	    public function getSal(){      
	        $salary = parent::getSal();// 这里调用了父类的方法.
	        echo $salary;echo "<br>";
	        echo $this->sal;
	        $this->sal = $this->sal + 1500;      
	        return $this->sal ;
	    }  
	}
	$emp = new employee();
	echo "普通员工的工资是 " . $emp->getSal();
	echo "<br>";
	 

	$manager = new Manager();
	var_dump($manager);
	echo "经理的工资是: " . $manager->getSal();
	var_dump($manager);

实例化employee结果:

    普通员工的工资是 4200
 

实例化manager

打印manager对象:

    object(Manager)[2]

       protected 'sal' => int 3000

调用manager getSal()方法:

    4200//返回值
    4200
经理的工资是: 5700//调用对象的属性,进行开工资,对象的属性此时就是父类的属性(子类没有对父类属性进行重写),此时因为调用父类的getSal()方法sal变为4200,调用时就是父类的属性值,再加上1500,就变为5700.

打印manager对象:

    object(Manager)[2]

      protected 'sal' => int 5700

 

如果子类对父类属性进行重写

class employee{
	    protected  $sal=3000;    
	    public function getSal(){
	        $this->sal = $this->sal + 1200;    
	         $salary = $this->sal;  

	        return $salary;
	    }  
	}
	 
	class Manager extends employee {
	    protected  $sal=3001;  
	    public function getSal(){      
	        $salary = parent::getSal();// 这里调用了父类的方法.
	        echo $salary;echo "<br>";
	        echo $this->sal;
	        $this->sal = $this->sal + 1500;      
	        return $this->sal ;
	    }  
	}
	$emp = new employee();
	echo "普通员工的工资是 " . $emp->getSal();
	echo "<br>";
	 

	$manager = new Manager();
	var_dump($manager);
	echo "经理的工资是: " . $manager->getSal();
	var_dump($manager);

别的没有变化就是对属性进行了重写:

实例化employee结果:

    普通员工的工资是 4200
 

实例化manager:

打印manager对象:

    object(Manager)[2]

      protected 'sal' => int 3001

调用manager getSal()方法:

    4201//属性,属性离不开对象,提属性必须说是哪个对象的属性!!!,此对象的属性为3001所以加1200为4201

//所以当调用父类的方法时,用的是重写时的属性值,($this->sal调用的值为对象的属性值),
    4201
经理的工资是: 5701

打印manager对象:

object(Manager)[2]

  protected 'sal' => int 5701

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值