抽象类与接口:让设计与实现分离!

[color=darkred][b]对于抽象类和接口的使用也是非常常见的,然后他们存在意义是什么呢?
[/b][/color]
[color=darkblue][b]抽象类与接口的意义在于让 设计与实现相分离。[/b][/color]
[b]
在抽象类中定义了一些标准,或者是实现了部分的方法,继承与该抽象类的子类可以遵循这些标准来实现自己的需求,或者是重写抽象类中已经实现的方法。
抽象类 不能被直接实例化,必须通过继承来实现。

接口 只能定义标准(一些方法),而不能包含具体实现的方法。
如果要使用接口,必须把在接口中定义的标准(一些方法),具体实现(也就是将接口中定义的方法全部实现)。

抽象类和接口,功能很相似,类只能继承与一个父类,却能一起使用多个接口,两者也能一起使用。
[/b]
[color=darkblue][b]总结为:单继承,多接口;先继承, 后接口。[/b][/color]
[color=darkred][b]
下面看如何定义抽象类 和 接口, 并且怎样一起使用。

定义抽象类的方法:[/b][/color]

// 定义一个关于形状的抽象类
abstract class Shape()
{
function setCenter($x, $y) // 定义了一个具体实现的方法
{
$this->x = $x;
$this->y = $y;
}
abstract function draw(); // 定义了一个抽象的方法,也就是一个标准,需要子类具体实现的
protected $x, $y; // 定义了两个属性

}

// 定义一个方形的子类
class Square extends Shape
{
function draw()
{
// 这里根据方形的特征来实现该方法
}
}

// 定义一个园的子类
class Circle extends Shape
{
function draw()
{
// 这里根据园的特征来实现该方法
}
}


[color=darkred][b]

定义接口的方法:[/b][/color]

interface Chargeable
{
public function getPrice();
}

class shopProduct implements Chargeable
{
public function getPrice()
{
// 具体实现接口中定义的 getPrice 方法的功能
}
}


[color=darkred][b]
一起使用抽象类和接口:[/b][/color]

class AClass extends BClass implements AInterface,BInterface
{
//...
}

[color=darkred][b]
上面只是简单的介绍了抽象类和接口的一些概念,还需要在不断的实践中来加深对这些概念的理解。[/b][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值