<?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;
}
}
?>
转载于:https://blog.51cto.com/huipiaodetuzi/762170