您的位置:首页 > 编程语言 > PHP开发

php面向对象中抽象类与接口的使用:

2014-04-24 12:38 585 查看
接口and抽象类

代码示例:

// 接口
/*
接口方法不能用 public private protected static abstract final 等修饰词修饰
系统会将方法指定死为 public abstract
成员属性只能是静态常量 const
接口可以多继承 implements N
*/
interface Obj
{
// static $name = 'fantasy'; //Interfaces may not include member variables
const Name = 'fantasy';
function get();
function set();
function del();
}
abstract class R implements Obj
{
// 实现接口的部分抽象方法 此类变成了抽象类
function get(){}
}
class Router extends R
{
// 实现剩余的抽象方法
function set(){}
function del(){}
}
// 抽象类
/*
抽象类(abstract class class_name)里面至少有一个抽象方法(abstract function func_name(); 没有abstract修饰的方法 function func_name(); 会报错 说方法没有结构体)
全是抽象方法也可以
抽象类里面允许有(各种权限的)属性
抽象类单继承 extends 1
*/
abstract class Base
{
public $name='base';
protected $age=12;
private $sex = '男';

abstract function foo();
abstract function exp();
function index()
{
echo 'this is a abstract class<br>';
}
}
abstract class Ext extends Base
{
public function foo()
{
echo '实现抽象类的foo方法,不然new不了';
}
/*public function exp()
{
echo '实现抽象类的exp方法,不然new不了';
}*/
}
class App extends Ext
{
public function exp()
{
echo '实现抽象类的exp方法,不然new不了';
}
}

总结:

1) 抽象方法 abstract function FUNC_NAME();

2) 接口的方法不允许用修饰词(系统指定死为 abstract public) 属性必须用const

 定义继承方法属性
抽象类abstract class CLASS_NAME extends 1 至少一个抽象方法  属性可以是各种权限
接口interface IF_NAMEimplements N全部抽象方法,不允许修饰词 属性只能是静态常量 const
实现 抽象类/接口 部分方法的class是抽象class

理解:

抽象类 定义好的封装类 给用户一些可扩展的自由,用户自由实现自己的方法

接口 严格的结构限制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息