将心比心,方得人心~

php继承的使用

周洲 2017-04-06 21:05:56

继承是从一个基类得到一个或多个类的机制。 继承自另一个类的类被称为该类的子类。这种关系通常用父类和孩子来比喻。子类将继 承父类的特性。这些特性由属性和方法组成。子类可以增加父类之外的新功能,因此子类也 被称为父类的“扩展”。

在PHP中,类继承通过extends关键字实现。继承自其他类的类成为子类或派生类,子 类所继承的类成为父类或基类。(PHP只支持单继承,PHP不支持方法重载)。

<?php

//这是父类,电脑类
class Computer {

    public $_name = '联想';

    public function _run() {
        echo '联想在运行!';
    }

}

//子类,笔记本电脑类
class NoteComputer extends Computer {

}

$notecomputer = new NoteComputer();
echo $notecomputer->_name;  //联想
$notecomputer->_run();  //联想在运行!

?>

子类重写父类的字段和方法:

<?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;  //dell
$notecomputer->_run();  //dell在运行!

//注意:父类的字段和方法不变,只是子类改变
?>

父类的字段和方法封装后(protected)子类如何调用父类的字段和方法:

<?php


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(); //联想联想在运行!

?>

通过重写调用父类的方法 

有的时候,我们需要通过重写的方法里能够调用父类的方法内容,这个时候就必须使用 语法:父类名::方法() 或者parent::方法()即可调用。

<?php


class Computer {
    public $_name = '联想';
    public function _run() {
        return '联想在运行!';
    }
}


class NoteComputer extends Computer {
    //我子类已经覆盖了父类的字段和方法
    //但是我又要调用父类的字段和方法,那怎么办呢?

    public $_name = 'dell';
    public function _run() {
        echo 'dell在运行!';
        echo parent::_run();
    }


}

$notecomputer = new NoteComputer();
echo $notecomputer->_name;  //dell
$notecomputer->_run();  //dell在运行!联想在运行!

?>

final关键字可以防止类被继承,有些时候只想做个独立的类,不想被其他类继承使用, 那么就必须使用这个关键字。建议只要是单独的类,都加上这个关键字。 

final如果加在类前面,表示这个类不能被继承

<?php

   final class Computer {
      
   }

class NoteComputer extends Computer {
    public function _run() {

    }
}

?>

final如果加在方法前面,表示不能够重写此方法。

<?php

class Computer {
    final public function _run() {

    }
}

class NoteComputer extends Computer {
    public function _run() {

    }
}


?>


打赏

『微信打赏』

Tag标签php 

上一篇: instanceof关键字

下一篇: php抽象类的使用

我是有底线的