zoukankan      html  css  js  c++  java
  • PHP面向对象(抽象类与抽象方法、接口的实现)

    一、抽象类与抽象方法

    1,任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。

    2,定义为抽象的类不能被实例化。

    3, 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。 

    4,必须在子类中将抽象类的全部抽象方法全部实现才可以

    <?php
    // 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
    abstract class Person // 定义为抽象的类不能被实例化。
    {
    public $name;
    public function __construct($name)
    {
    $this->name = $name;
    }
    // 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
    abstract protected function hello();
    abstract protected function say();
    public function show()
    {
    return "我的名字:".$this->name;
    }
    }
    class Worker extends Person
    {
    // 必须在子类中将抽象类的全部抽象方法全部实现才可以
    public function hello()
    {
    return 'Hello '.$this->name;
    }
    public function say()
    {
    return 'Say '.$this->name;
    }
    }
    $worder = new Worker('小明');
    echo $worder->hello(); // Hello 小明
    echo '<hr>';
    echo $worder->say(); // Say 小明
    echo '<hr>';
    echo $worder->show(); // 我的名字:小明
    ?>


    ?>

    二、接口的实现

    使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

    接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

    接口中定义的属性是类常量,定义的所有方法都必须是公有的抽象方法,所以public 、abstract 可不写,这是接口的特性。

    <?php
    interface Person1
    {
    // 接口中定义的属性必须是:类常量
    const SITENAME = '我在学习PHP';
    // 接口中定义的所有方法都必须是公有的抽象方法,所以public 、abstract 可不写
    function show();
    function do();
    }
    interface Person2
    {
    function hello();
    }
    // 接口不允许实例化,但可以被继承,创建一个类继承接口并实现所有的抽象方法
    class Worker implements Person1,Person2
    {
    public function show()
    {
    return self::SITENAME;
    }
    public function do()
    {
    return '我在写代码~~';
    }
    public function hello()
    {
    return 'PHP是非常好的一种语言~~';
    }
    }
    $worker = new Worker();
    echo $worker->show(); // 我在学习PHP
    echo '<hr>';
    echo $worker->do(); // 我在写代码~~
    echo '<hr>';
    echo $worker->hello(); // PHP是非常好的一种语言~~
    ?>

  • 相关阅读:
    Android 最简单的基于FFmpeg的移动端例子:Android HelloWorld
    实现简易的android 直播技术
    Android Service和Thread的关系
    Android Fragment 你应该知道的一切
    SQLyog普通版与SQLyog企业版对比分析
    Sqoop异常解决ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter问题
    SQLyog软件里无法插入中文(即由默认的latin1改成UTF8编码格式)
    Sqoop-1.4.6工具import和export使用详解(官网)
    Sqoop Export原理和详细流程讲解
    Sqoop Import原理和详细流程讲解
  • 原文地址:https://www.cnblogs.com/qxandxt/p/10469069.html
Copyright © 2011-2022 走看看