<?php
class Animal{
  private $weight;
  public function getWeight()
  {
     return $this->weight;
  }
  public function setWeight($w)
  {
     $this->weighy=$w;
  }
}

?>
<?php
 //构造函数的继承
 class Animal{
   public $legNum=0;
   public function __construct()
   {
      $this->legNum=4;
 echo "I am on animal<br/>";
   }
   
 }
class Dog1 extends Animal{

}
$dog1=new Dog1();
echo "<br/>";
echo "legNum is ".$dog1->legNum;
//实列话子类是,够着函数被调用。

?>
<?php
//私有方法不被继承
class employee{
  private $sal=300;
  private function getSal()
  {
     return $this->sal;
  }
  }
class Manager extends employee{
   public function getManagerSal()
   {
      return $this->getSal();
   }
}
$manager= new Manager();
echo $manager->getManagerSal();
?>
例2-2-1
private 不能直接被外部调用,只能由当前对象调用。
前面介绍过关于封装的内容.这里不再重复。
比如你可以借钱给别人,但不希望别人知道你钱包里面有多少钱。
我们把它用private隐藏起来。
<?php
class You{
  private $youMoney=1000;
  
  public function loan($number){
     if($this->youMoney>=$number){
  $this->youMoney=$this->youMoney-$number;
  echo "好的,这里我借你 $number 元,可是我也没有多少了。<br/>";
}else{
  echo "我无法接 $number 元给你,我没有这么多钱。";
}
   }
   public function insert($money){
      $this->youMoney=$this->youMoney+$money;
 echo "你好,你存款 $money 进荷包了。"
   }
   
}
$you =new You();
$you->loan(300);
$you->loan(600);
you->loan(500);
echo $you->youMoney;//这就语句输出异常,改变量不能被外界方位。
?>


//protected 的访问权限。老婆大人查账。
<?php
class You{
  private $youMoney=1000;
  
  public function loan($number){
     if($this->youMoney>=$number){
  $this->youMoney=$this->youMoney-$number;
  echo "好的,这里我借你 $number 元,可是我也没有多少了。<br/>";
}else{
  echo "我无法接 $number 元给你,我没有这么多钱。";
}
   }
   public function insert($money){
      $this->youMoney=$this->youMoney+$money;
 echo "你好,你存款 $money 进荷包了。"
   }
   
}
class  YouWife extends You{
   public function getMoney(){
     return $this->youMoney;//老婆大人我现在只有这点钱啦。
   }
}
$youWife = new YouWife;
$youWife->loan(900);//老婆拿了900块钱。杯具,我的私房钱快没了!
echo "老婆,我这里还有.....".$youWife->getMoney()."元";//做男人辛苦啊。
?>


public的访问权限
不用借钱,想那就拿。
家庭零花钱消费情况。
<?php
class You{
  private $youMoney=1000;
  
  public function loan($number){
     if($this->youMoney>=$number){
  $this->youMoney=$this->youMoney-$number;
  echo "好的,这里我借你 $number 元,可是我也没有多少了。<br/>";
}else{
  echo "我无法接 $number 元给你,我没有这么多钱。";
}
   }
}
$you =new You();
$you->youMoney =$you->youMoney-500;//不知道是儿子哪里,还是老婆哪里。
echo "我现在零花钱只有"。$you->youMoney;
echo "钱哪里去了我也不知道。";//这样管理财务太危险了。通过上面的封装可以保护数据。嘻嘻,做人要大方点(特别是自己的家人)。
?>

<?php
  class Cat{
     protected $eyeNumber=2;
public function getEyeNumber(){
  return $this->eyeNumber;
 }
public function yarr(){
  return "Cat miao,..miao";
}
public function run(){
  return "Cat run ,...running";
 
}
  }
$cat=new Cat();
echo 'cat have'.$dog->getEyeNumber()."eyes.<br/>";
echo $dog->yaff()."<br/>".$dog->run();
echo "<br><br>";

class MyCat extends Cat{
  private $name="小猫";
  public function getName(){
    return $this->name;
  }
  public function yarr()
   {
     return $this->name.",heng miao...heng miao...";
   }

}
$myCat= new MyCat();
echo $myCat->getName."have".$myCat->getEyeNumber."eyes.<br/>";
echo $myCat->yaff()."<br/>".$myCat->run();

?>

//重写方法与访问权限
子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限
<?php
class Dog{
  protected $eyeNmber=2;
  public function getEyeNumber(){
    return $this->eyeNumber;
  }
  
 }
class MyDog extends Dog{
  private function getEyeNumber(){
     return $this->eyeNmber;
  }
}
?>