道者编程

php中abstract和interface的区别

一:interface(接口)

1:接口中每个方法都只是声明,而没有实现。

2:实现该方法的类必须包括接口中所有声明的方法。

3:接口中的方法只能用public

//定义User接口
interface User
{
    //接口中有两个方法,切接口方法必须是public 
    public function add($str);
    public function edit($str);
}

class UserTable implements User //implements关键字实现User接口中的方法
{
    //上述接口中的所方法都必须要定义,否则程序报错
    public function add($str)
    {
        echo $str;
    }

    public function edit($str)
    {
         echo $str;
    }
}
$user = new UserTable;
$user->add('1');
 

二:abstract(抽象类)

1:抽象类不能实例化

2:抽象类可以定义普通方法,也可以强制要求子类定义这些方法。

3:普通方法可用于公用方法或重复方法,减少代码

<?php
abstract class AbstractClass
{
 // 强制要求子类定义这些方法
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);

    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->getValue() . "\n";
    }
}

class ConcreteClass1 extends AbstractClass
{
    protected function getValue() {
        return "ConcreteClass1";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass1";
    }
}
 


最新评论:
我要评论:

看不清楚