PHP中的抽象方法和抽象类

zxh5566  2016-08-30 19:08   Hits: 

在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法作为外部代码访问它的接口,而抽象方法就是为了方便继承而引入的,下面介绍一下抽象类和抽象方法的声明以及用途

在声明抽象类之前,先说一下什么是抽象类方法,抽象方法就是没有方法体的方法,所谓的没有方法体就是指在方法声明时没有花括号以及其中的内容,而是在声明方法时直接在方法名后加上分号结束

,另外在声明抽象方法时,还要使用关键字abstract来修饰,声明抽象方法格式如下

abstract function fun1();
abstract function fun2();

只要在声明类时有一个方法是抽象方法,那么这个类就是抽象类,抽象类也要使用abstract关键字来修饰,在抽象类中可以有不是抽象的成员方法和成员属性,但访问权限不能使用private关键字修饰,

需要使用abstract标识

<?php
abstract class person{
protected $name;
protected $country;
function __construct($name='',$country=''){
$this->name = $name;
$this->country = $country;
}
abstract function say();
abstract function eat();
function run(){
echo "使用两条腿走路";
}
}
?>

抽象类就是一个半成品的类,在抽象类中没有被实现的抽象方法,所以抽象类时不能被实例化的,既然抽象类时一个半成品的类,那么使用抽象类有什么作用,使用抽象类就包含了继承关系,它是为它

的子类定义公共接口,将它的操作交给子类实现,就是将抽象类作为子类重载的模板使用,定义抽象类就相当于定义了一种规范,这种规范要求子类去遵守,当子类继承抽象类以后,就必须把抽象类中

的抽象方法按照子类自己的需要去实现,子类必须把父类中的抽象方法全部实现,否则子类中还是有抽象方法,所以还是抽象类,也不能实例化。

<?php

class chineseMan extends person{
function say(){
echo $this->name.'是'.$this->country.'人,讲汉语';
}
function eat(){
echo $this->name."使用筷子吃饭";
}

}

class Americans extends preson{
function say(){
echo $this->name.'是'.$this->country.'人,讲英语';
}
function eat(){
echo $this->name."使用刀叉吃饭";
}

}

$chinese = new chineseMan('zxh','中国');
$american = new Americans('zxh5566','美国');

$chinese->say();
$chinese->eat();
$american->say();
$american->eat();

在上例中声明了两个类去继承抽象类person,并将类中的抽象方法按各自的需要分别实现,这样两个子类就都可以创建对象了,抽象类person就可以看成是一个模板,类中的抽象方法自己不去实现,只

是规范了子类中必须要有父类中声明的抽象方法,而且要按自己类的特点实现抽象方法中的内容。

上一篇:PHP的Session详解
下一篇:PHP接口技术介绍