1 抽象类 关键字 abstract
2 类中只要有一个方法声明为abstract的抽象方法,那么这个类就必须声明为抽象类
3 抽象方法只允许有方法声明与参数列表,不允许有方法体
4 抽象方法的不确定性,所以抽象类禁止实例化,仅允许继承关键字extends来实例化
5 抽象类的子类中,必须将抽象类中的所有抽象方法全部实现
6 子类成员的访问限制级别必须等于或小于抽象类的约定,例如抽象类是protected,子类必须是protected 或者 public 不允许是private
7.子类方法参数必须与抽象类方法参数完全一致,但允许增加默认参数
abstract class Fruits{
//水果名称
protected $name;
//抽象方法
abstract public function eat();
//尽管不能直接实例化抽象类,但仍然可以有构造方法
public function __construct() {
return '抽象类构造器,实例化时自动调用<br>';
}
}
//实际开发中应该为每一个类创建独立的类文件
class Apple extends Fruits{
protected $name = '苹果';
public function eat() {
return $this->name.'可以直接吃';
}
//子类构造函数
public function __construct() {
echo parent::__construct();
}
}
$apple = new Apple;
echo $apple->eat();