为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 抽象类与接口特点对比

标签:
PHP
PHP抽象类

除了常规的类,PHP还提供了抽象类,抽象类特点如下:

  • 抽象类中声明的抽象方法,其子类必须实现
  • 抽象类可以存在具体方法和具体属性,也可以只包含具体方法
  • 抽象类不能实例化,只能由具体类继承抽象类的接口和具体属性
  • 一个类至少有一个抽象方法,它必然是一个抽象类
<?php
/**
 * abstract classes
 */
abstract class Fruit
{
    protected $fruitName;
    protected $fruitColor;

    //强制要求子类实现的方法
    abstract protected function getFruitName();
    abstract protected function setFruitName($name);
    abstract protected function getFruitColor();
    abstract protected function setFruitColor($color);

    function showFruit()
    {
        echo "FruitName:" . $this->getFruitName() . "\n";
        echo "FruitColor:" . $this->getFruitColor() . "\n";
    }
}

class Apple extends Fruit
{
    function __construct($name, $color)
    {
        $this->setFruitName($name);
        $this->setFruitColor($color);
        $this->showFruit();
    }

    protected function getFruitName()
    {
        return $this->fruitName;
    }

    protected function setFruitName($name)
    {
        $this->fruitName = $name;
    }

    protected function getFruitColor()
    {
        return $this->fruitColor;
    }

    protected function setFruitColor($color)
    {
        $this->fruitColor = $color;
    }
}

$apple = new Apple('Apple', 'Red');
?>
PHP 接口

OOP和设计模式的另一个重要组成是接口,接口的特点如下:

  • 实现接口必须要实现接口定义的所有方法
  • 接口使用 interface 操作符创建
  • 接口使用 implements 操作符实现
  • 可以使用双冒号操作符存取常量
  • 接口定义的方法都必须是公有的
  • 接口也可以继承,通过使用extends操作符
<?php
interface IConnection
{
    const HOST = "localhost";
    const USER = "root";
    const DBNAME = "ancmf";
    const PASSWD = "123456";

    function testConnection();
}

class MySQLConnection implements IConnection
{
    //使用作用域解析操作符
    private $user = IConnection::USER;
    private $servre = IConnection::HOST;
    private $database = IConnection::DBNAME;
    private $password = IConnection::PASSWD;

    function testConnection()
    {
        $connect = new mysqli($this->servre, $this->user, $this->password, $this->database);

        if (mysqli_connect_error()) {
            die('bad connect');
        }

        echo "connect success";

        $connect->close();
    }
}

$mysqlConnection = new MySQLConnection();
$mysqlConnection->testConnection();
?>
点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
12
获赞与收藏
155

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消