zoukankan      html  css  js  c++  java
  • PHP类(三)-类的封装

    设置私有成员

    使用private关键字来设置私有成员,完成对成员的封装,封装后的成员在对象的外部不能被访问,如果访问会出现错误,在对象的内部能访问被封装的成员属性和方法。

    <?php
    	class Person{
    		//封装属性
    		private $name;
    		private $age;
    		private $sex;
    		
    		function __construct($name="Tom",$age=23,$sex="Male"){
    			$this->name = $name;
    			$this->age = $age;
    			$this->sex = $sex;
    		}
    		
    		function Say(){
    			echo "My name is ".$this->name.",and my age is ".$this->age.",sex is ".$this->sex;
    		}
    		
    		private function Walk(){
    			echo $this->name." is Walk.";
    		}
    	}
    	
    	$p1 = new Person();
    	$p1->Say();
    	$p1->Walk();
    	$p1->age = 25;
    ?>
    

     执行结果

    My name is Tom,and my age is 23,sex is Male
    Fatal error: Call to private method Person::Walk() from context '' in C:phpStudyWWWphpleiFengZhuang.php on line 25
    Fatal error: Cannot access private property Person::$age in C:phpStudyWWWphpleiFengZhuang.php on line 26
    

     私有成员的访问

    在对象外如果想获取私有属性的值,或者想给私有属性赋值,可以使用public关键字或者在对象内部声明一些操作私有属性的方法

    类中的构造方法默认为公有方法,构造方法不要设置成私有的

    <?php
    	class Person{
    		private $name;
    		private $age;
    		private $sex;
    		
    		function __construct($name="Tom",$age=23,$sex="Male"){
    			$this->name = $name;
    			$this->age = $age;
    			$this->sex = $sex;
    		}
    		
    		function Say(){
    			echo "My name is ".$this->name.",and my age is ".$this->age.",sex is ".$this->sex;
    			echo "<br>";
    		}
    		
    		public function Walk(){
    			echo $this->name." is Walk.";
    			echo "<br>";
    		}
    		
    		public function SetAge($age){
    			if($age >100 || $age <0)
    				return;
    			else
    				$this->age = $age;
    				return $this->age;
    		}
    	}
    	
    	$p1 = new Person();
    	$p1->Say();
    	$p1->Walk();
    	$p1->SetAge(53);
    ?>
    

     运行结果

  • 相关阅读:
    ubuntu 14.04 安装python包psycopg2
    vmare 往 virtualbox迁移
    docker-compose & docker 镜像/加速
    nodejs & npm & gulp 安装和配置
    airflow 优化
    airflow 部署
    windows 上vmare超卡的问题解决方案
    HDU 6781 Solo (贪心 + 优先队列)
    HDU 6779 Drink (最小费用流)
    HDU 6778 Car (状压DP)
  • 原文地址:https://www.cnblogs.com/sch01ar/p/8146699.html
Copyright © 2011-2022 走看看