您的位置 >>> 星想互联 >>> 编程技术 >>> PHP基础
PHP初级教程六:抽象类和接口
点击数:1588  发布时间2017-08-03 20:26:24

PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。

被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;


定义方法:
abstract class animal{

//类的成员
}

下面通过一个案件来演示抽象类和抽象方法:


abstract class animal{
abstract public function shout();
}

class dog extends animal{
//实现抽象方法
public function shout(){
echo "我会狗叫";
}
}

class cat extends animal{
public function shout(){
echo "我会猫叫";
}
}

$idog=new dog();
$icat=new cat();
$idog->shout();
$icat->shout();

注意:

1、抽象类不能被实例化。

2、抽象类可以没有抽象方法,但有抽象方法的抽象类才有意义,一旦类包含了抽象方法,则这个类必须声明为abstract 。

3、抽象类中可以有非抽象方法,成员属性和常量。

4、抽象方法不能有函数体,它只能存在于抽象类中。

5、如果一个类继承了某个抽象类,则它必须实现该抽象类的所有抽象方法,除非它自己也声明为抽象类。


如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方法来定义,即接口,在定义接口时,需要使用interface关键字,

interface animal{

public function run();

public function spk();

}

由于接口中定义的方法都是抽象方法,没有具体的实现 ,需要通过类来实现接口,实现接口用implements关键字,以下是实际案例:

interface animal{
function run();
function spk();
}
class dog implements animal{
public function run(){
echo "狗在跑";
}
public function spk(){
echo "狗在叫";
}
}
class cat implements animal{
public function run(){
echo "猫在跑";
}
public function spk(){
echo "猫在叫";
}
}

$icat=new cat();
$idog=new dog();
$icat->run();
$idog->spk();

来源:星想互联