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 ?>

 

posted @ 2014-05-13 17:09  安全大可  阅读(428)  评论(0)    收藏  举报
真正的安全感源自于自身的实力
回顶部