[color=darkred][b]对于抽象类和接口的使用也是非常常见的,然后他们存在意义是什么呢?
[/b][/color]
[color=darkblue][b]抽象类与接口的意义在于让 设计与实现相分离。[/b][/color]
[b]
在抽象类中定义了一些标准,或者是实现了部分的方法,继承与该抽象类的子类可以遵循这些标准来实现自己的需求,或者是重写抽象类中已经实现的方法。
抽象类 不能被直接实例化,必须通过继承来实现。
接口 只能定义标准(一些方法),而不能包含具体实现的方法。
如果要使用接口,必须把在接口中定义的标准(一些方法),具体实现(也就是将接口中定义的方法全部实现)。
抽象类和接口,功能很相似,类只能继承与一个父类,却能一起使用多个接口,两者也能一起使用。
[/b]
[color=darkblue][b]总结为:单继承,多接口;先继承, 后接口。[/b][/color]
[color=darkred][b]
下面看如何定义抽象类 和 接口, 并且怎样一起使用。
定义抽象类的方法:[/b][/color]
[color=darkred][b]
定义接口的方法:[/b][/color]
[color=darkred][b]
一起使用抽象类和接口:[/b][/color]
[color=darkred][b]
上面只是简单的介绍了抽象类和接口的一些概念,还需要在不断的实践中来加深对这些概念的理解。[/b][/color]
[/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]