美文网首页PHP开发者码农的世界程序员
PHP面向对象基础知识整理2

PHP面向对象基础知识整理2

作者: e582551b6ee5 | 来源:发表于2017-02-09 12:54 被阅读31次

    1.instanceof关键词使用

    <?php
    class Computer{
    
    }
    
    $computer = new Computer();
    
    echo ($computer instanceof Computer);
    //instanceof关键词用于判断$computer是否是类Computer下的对象
    

    2.面向对象特性1继承,使用 extends关键词

    <?php
    //这是父类,电脑类
    class Computer{
        public $_name = '联想';
    
        public function _run(){
            echo '联想在运行!';
        }
    }
    
    //子类,笔记本电脑类
    class NoteComputer extends Computer{
    
    }
    
    $notecomputer = new NoteComputer();
    echo $notecomputer->_name;
    $notecomputer->_run();
    

    3.方法重载

    <?php
    //这是父类,电脑类
    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

    <?php
    //这是父类,电脑类
    //为了安全,一般将父类的方法封装起来,让子类来调用,通过子类调用要设置protected才能调用父类
    class Computer{
    
        //私有化,但是无法被子类继承,这个时候要用受保护的修饰符来封装
        protected $_name = '联想';
    
        protected function _run(){
            return '联想在运行!';
        }
    }
    
    //子类,笔记本电脑类
    class NoteComputer extends Computer{
        public function getTop(){
            echo $this->_name;
            echo $this->_run();
        }
    }
    
    $notecomputer = new NoteComputer();
    $notecomputer->getTop();
    

    5.子类已经覆盖了父类,但是又再想调用父类的成员字段方法

    <?php
    //这是父类,电脑类
    class Computer{
        public $_name = '联想';
    
        public function _run(){
            return '联想在运行!';
        }
    }
    
    //子类,笔记本电脑类
    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关键字使用

    <?php
    //final如果加在类前面,表示这个类不能被继承
    //final class Computer{
    //
    //}
    
    //class Computer{
    //    //final如果加在方法前面,表示不能够重写此方法
    //    final public function _run(){
    //
    //    }
    //}
    
    class Computer{
        public function _run(){
    
        }
    }
    
    class NoteComputer extends Computer{
        public function _run(){
    
        }
    }
    

    如果喜欢,可以关注我,希望能认识更多志同道合的朋友。

    相关文章

      网友评论

        本文标题:PHP面向对象基础知识整理2

        本文链接:https://www.haomeiwen.com/subject/ieoyittx.html