PHP面向对象4之特性-继承
继承是从一个基类得到一个或多个类的机制。
继承自另一个类的类被称为该类的子类。 这种关系通常用父类和孩子来比喻。 子类将继承父类的特性。 这些特性由属性和方法组成。 子类可以增加父类之外的新功能, 因此子类也被称为父类的“扩展” 。
1 <?php 2 /** 3 * PHP面向对象特性 --继承 4 * 继承是从一个基类得到一个或多个类的机制 5 * 继承自另一个类的类被称为该类子类,这种关系就好像是父亲和儿子,父类有的,子类都有 6 * 而且子类还能有父类没有的东西,因此子类也被成为父类的扩展 7 * 8 * 类继承通过extends关键字来实现,继承自其他类的类称为子类或者派生类,子类所继承的类成为父类或基类 9 * (PHP只支持单继承,而且不支持方法重载。前者与JAVA一样) 10 */ 11 12 //这是父类--电脑 13 class Computer{ 14 public $_name ='Dell'; 15 public function _run(){ 16 echo '电脑在运行!'; 17 } 18 } 19 20 //这是子类--笔记本电脑 21 class NoteComputer extends Computer{ 22 23 } 24 25 $noteCom = new NoteComputer(); 26 echo $noteCom->_name; 27 $noteCom->_run(); 28 29 ?>
1 <?php 2 /** 3 * PHP面向对象特性 --继承--重写 4 * 字段和方法的重写(覆盖) 5 * 有时,父类的一些方法和字段没用,那么就可以通过子类来重写父类的方法和字段 6 */ 7 class Computer{ 8 public $_name='Dell'; 9 public function _run(){ 10 echo '电脑在运行'; 11 } 12 } 13 class NoteComputer extends Computer{ 14 //重写 15 public $_name='联想'; 16 } 17 18 $noteCom = new NoteComputer(); 19 echo $noteCom->_name; 20 $noteCom->_run(); 21 22 ?>
1 <?php 2 /** 3 * PHP面向对象特性 --继承-- 封装情况下 子类调用父类的字段和方法 4 * 一般情况下,为了安全起见,我们会把父类的字段和方法封装起来,这样外部就无法调用,只能被继承它的子类 5 * 所看到,这个时候,就需要通过子类操作来调用父类了。 6 */ 7 class Computer{ 8 //私有化的无法被子类继承,需要用protected来封装 9 //private $_name='Dell'; 10 protected $_name='Dell'; 11 protected function _run() { 12 echo '电脑在运行'; 13 } 14 } 15 class NoteComputer extends Computer{ 16 public function getTop(){ 17 echo $this->_name; 18 echo $this->_run(); 19 } 20 } 21 22 $noteCom = new NoteComputer(); 23 $noteCom->getTop(); 24 ?>
1 <?php 2 /** 3 * PHP面向对象特性 --继承-- 通过重写调用父类方法 4 * 有时,我们需要通过重写的方法来调用父类的方法内容,这个时候需要用到语法: 5 * 父类名::方法() 或 parent::方法() 来调用 6 */ 7 class Computer{ 8 public $_name='Dell'; 9 public function _run(){ 10 echo '电脑1在运行'; 11 } 12 } 13 class NoteComputer extends Computer{ 14 //子类已经重写了父类的字段和方法,又要调用父类的,如何实现。 15 public $_name='联想'; 16 public function _run(){ 17 echo '电脑2在运行'; 18 echo parent::_run(); 19 } 20 } 21 22 $noteCom = new NoteComputer(); 23 echo $noteCom->_name; 24 $noteCom->_run(); 25 ?>
1 <?php 2 /** 3 * PHP面向对象特性 --继承-- final关键字 4 * final关键字可以防止类被继承,有些时候只想做个独立的类,不想被其他类继承使用, 5 * 那么就必须使用这个关键字,建议只要是单独的类,都加上这个关键字 6 */ 7 8 final class Computer{ 9 //final加在方法或者字段前,表示该字段或方法不能被重写 10 final public function _run(){ 11 echo '电脑1在运行'; 12 } 13 } 14 class NoteComputer extends Computer{ 15 public function _run(){ 16 echo '电脑2在运行'; 17 } 18 //会报错 19 } 20 21 ?>
本文发于:安全大可文章转载请注明出处:http://im404.cnblogs.com
相关事宜请联系:im404@qq.com

浙公网安备 33010602011771号