//狗有两只眼睛,会汪汪叫,会跑。 class Dog{ protected $eyeNumber = 2; //属性 //返回封装属性方法 public function getEyeNumber(){ return $this->eyeNumber; } //狗会叫 public function yaff(){ return "Dog yaff,wang...wang...."; } //狗会跑 public function run(){ return "Dog run. runing...."; } }
$dog = new Dog(); echo "dog have".$dog->getEyeNumber()." eyes. <br>"; echo $dog->yaff()."<br>".$dog->run(); echo "<br><br><br><br>"; class MyDog extends Dog{ private $name = "狗狗"; public function getName(){ return $this->name; } public function yaff(){ return $this->name." , heng...heng..."; } } $myDog = new myDog(); echo $myDog->getName()."have".$myDog->getEyeNumber()." cyco.<br>"; echo $myDog->yaff()."<br>".$myDog->run(); ?>
<? //重写方法与访问权限 //子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。 //父类为public子类为private protected class Dog{ protected $eyeNumber = 2; //属性 //返回封装属性方法 public function getEyeNumber(){ return $this->eyeNumber; } //狗会叫 public function yaff(){ return "Dog yaff,wang...wang...."; } //狗会跑 public function run(){ return "Dog run. runing...."; } } class MyDog extends Dog{ private $name = "狗狗"; public function getName(){ return $this->name; } //父类是public private function yaff(){ return $this->name." , heng...heng..."; } //父类是private protected function run(){ return "Dog run. runing...."; } } //会提示错误因为php中不允许这样做 ?>
<? //重写时的参数数量 //子类可以拥有与父类不同的参数数量。(这点与java不同,PHP是弱类型语言。) class Dog{ protected $eyeNumber = 2; public function getEysNumber(){ return $this->eyeNumber; } } class MyDog extends Dog{ public function getEyeNumber($eys){ $this->eyeNumber = $eys; return $this->eyeNumber; } } $myDog = new MyDog(); echo "my dog have ".$myDog->getEyeNumber(3)." eyes.";
//如果我们不进行参数传递会报错,下面这句就会出错 echo "my dog have ".$myDog->getEyeNumber()." eyes."; ?>
class Animal{ public $legNum = 0; public function __construct(){ $this->legNum = 4; echo "I am an animal <br>"; } } class Dog1 extends Animal{ public function __construct(){ $this->legNum = 4; echo "I am a Dog <br>"; } }
$dog1 = new Dog1(); echo "<br>"; echo "legNum is ".$dog1->legNum; //实例化子类时只是调用了子类的构造函数 //(注:这点和Java不同,在java中构造函数是不能被继承的,而且子类实例化时,子类的构造函数被调用,父类的构造函数也会调用。) ?>