磨阶覆偏贰蝎恢废咸凡还酞哇
新建17目录 在17下新建demo1.php
代码:
<?php /** * 抽象类 */ class Fruits { protected $name; public function __construct($name) { $this->name=$name; } public function eat() { return $this->name."是可以生吃的"; } } $obj=new Fruits('苹果'); echo $obj->eat();
执行:
抽象类
1.使用关键字: abstract
2.类中只要有一个方法声明为abstract抽象方法,那么这个类就必须声明为抽象类
3.抽象方法只允许有方法声明与参数列表,不允许有方法体;
4.因为抽象方法的不确定性,所以抽象类禁止实例化,仅允许通过继承来实例化;
5.继承抽象类的子类中,必须将抽象类中的所有抽象方法全部实现
6.子类成员的访问限制级别必须等于或小于抽象类的约定,例如抽象类是protected,子类必须是
protected 或者 public 不允许是private
7.子类方法参数必须与抽象类方法参数完全一致,但允许增加默认参数
特别注意
1. 尽管抽象类不能实例化,但仍然可以为它创建构造器,但必须声明为final
2. 抽象类理论上说不应该拥有静态成员,部分编辑器会有E_STRICT2048提示,但仍然可以这样做
如果对于eat()方法,只给出样子,而不实现,该方法叫做抽象方法。也称为协议,委托,约定。
public function eat();
抽象方法,需要这样写:
abstract public function eat();
一个类中只要有抽象方法,该类必须声明为抽象类,且抽象类不允许实例化!
抽象类一般用做父类,其方法通过继承实现
修改:
<?php /** * 抽象类 */ abstract class Fruits { protected $name; public function __construct($name) { $this->name=$name; } //抽象方法 abstract public function eat(); } class Apple extends Fruits { protected $name; public function __construct($name) { parent::__construct($name); } public function eat()//子类必须将父类中的抽象方法全部实现!!! { return $this->name."是可以生吃的"; } } $obj=new Apple('西瓜'); echo $obj->eat();
执行:
纲亨歧蕾霸畴酱腺煤洽拳竿聊