PHP面向对象特性-继承

来源:互联网 发布:java序列化 编辑:程序博客网 时间:2024/06/16 03:22

1、继承
定义:继承是从一个基类得到一个或多个类的机制。
关键字:extends
注: PHP只支持单继承,不支持方法重载。
2、例子

class Computer{        public $_name = '联想';        public function _run(){            echo '联想在运行';        }    }     class NoteComputer extends Computer{    }    $notecomputer = new NoteComputer();    echo $notecomputer->_name;    $notecomputer->_run();

3、重写

    class Computer{        public $_name = '联想';        public function _run(){            echo '联想在运行';        }    }     class NoteComputer extends Computer{    //我不需要父类的字段和方法,可以采用重写的方法覆盖        public $_name = 'DELL';        public function _run(){            echo 'DELL 在运行。';        }    }    $notecomputer = new NoteComputer();    echo $notecomputer->_name;    $notecomputer->_run();

4、protected
父类私有化时,无法被子类继承,这个时候应该用受保护的(protected )修饰符。

class Computer{        protected $_name = '联想';        protected function _run(){        echo '联想在运行';        }    }     class NoteComputer extends Computer{        public function getTop(){            echo $this->_name;            echo $this->_run();        }    }    $notecomputer = new NoteComputer();    $notecomputer->getTop();

5、重写调用父类方法
子类已经覆盖父类字段和方法,还想调用父类该怎么办?

    class Computer{        public $_name = '联想'; //字段无法调用        public function _run(){            echo '联想在运行';        }    }     class NoteComputer extends Computer{        public $_name = 'DELL';        public function _run(){            echo 'DELL 在运行。';            //调用父类的两种方法            echo Computer::_run();            echo parent::_run();        }    }    $notecomputer = new NoteComputer();    echo $notecomputer->_name;    $notecomputer->_run();

6、final关键字

    //final 如果加在类前 表示不能被继承    final class Computer{    }     class NoteComputer extends Computer{    }    class Computer{    //final 加在方法前,表示不能被重写    final public function _run()    }    class NoteComputer extends Computer{    }
原创粉丝点击