抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
类里被定义的抽象的方法只是声明,方法内容由其子类实现。
子类如果继承一个抽象类的父类,子类必须实现父类定义的所有抽象方法
//父类(如果类中有一个方法是抽象方法,这个类就必须声明为抽象类)
abstract class Demo{
public $name;
public function __construct($name){
$this->name=$name;
}
//定义抽象方法hello和say;
abstract public function hello();
abstract public function say();
//普通方法
public function test(){
return 'Demo::test()';
}
}
//子类
class Demo1 extends Demo{
//子类必须实现父类所有抽象方法
//实现父类的抽象方法hello和say
public function hello(){
return 'Hello'.$this->name;
}
public function say(){
return '我的名字是'.$this->name;
}
}
//实例化子类
$demo1=new Demo1('小明');
echo $demo1->hello();//Hello小明
echo $demo1->say();//我的名字是小明