Heim > php教程 > php手册 > Hauptteil

php使用接口(interface)实现多重继承

WBOY
Freigeben: 2016-06-06 19:55:36
Original
1299 Leute haben es durchsucht

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 php中使用接口(interface)实现多重继承: 我们都知道PHP中的类(class)是单继承的,那是不是就没有办法实现多重继承了呢?答案是否定的.我们可以通过其它特殊的方式实现类的多重继承,比如使用接口(interf

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

    php中使用接口(interface)实现多重继承:

    我们都知道PHP中的类(class)是单继承的,那是不是就没有办法实现多重继承了呢?答案是否定的.我们可以通过其它特殊的方式实现类的多重继承,比如使用接口(interface)实现,只要把类的特征抽象为接口,并通过实现接口的方式让对象有多重身份,通过这样就可以模拟多重继承了.

    下面是一个用接口(interface)实现多重继承的例子,源代码如下:

   

    interface UserInterface{ //定义User的接口

    function getname();

    }

    interface TeacherInterface{ //teacher相关接口

    function getLengthOfService();

    }

    class User implements UserInterface { //实现UserInterface接口

    private $name = “tom”;

    public function getName(){

    return $this->name;

    }

    }

    class Teacher implements TeacherInterface { //实现TeacherInterface接口

    private $lengthOfService = 5; // 工龄

    public function getLengthOfService(){

    return $this->lengthOfService;

    }

    }

    // 继承自User类,同时实现了TeacherInterface接口.

    class GraduateStudent extends User implements TeacherInterface {

    private $teacher ;

    public function __construct(){

    $this->teacher = new Teacher();

    }

    public function getLengthOfService(){

    return $this->teacher->getLengthOfService();

    }

    }

    class Act{

    //注意这里的类型提示改成了接口类型

    public static function getUserName(UserInterface $_user){

    echo “Name is ” . $_user->getName() .“
”;

    }

    //这里的类型提示改成了TeacherInterface类型.

    public static function getLengthOfService(TeacherInterface $_teacher){

    echo “Age is ” .$_teacher->getLengthOfService() .“
”;

    }

    }

    $graduateStudent = new GraduateStudent();

    Act::getUserName($graduateStudent);

    Act::getLengthOfService($graduateStudent);

    //结果正如我们所要的,实现了有多重身份的一个对象.

    ?>

    示例运行结果如下:

    Name is tom

    Age is 5

php使用接口(interface)实现多重继承

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!