Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:记住这些特殊类的使用场景很重要, 但更重要的记住什么时候要用到他们, 特别是可用可不用的时候
<?php
abstract class a{
public $name;
public function __construct($name)
{
$this -> name =$name;
}
public function af(){
echo $this -> name .'111';
}
// 抽象方法
abstract public function aff();
}
//抽象类不能实例化,只能继承
class b extends a{
public function aff(){
echo $this ->name;
}
}
//调用子类,进行实例化,调用成员方法和成员变量
$a =new b('欧阳克');
$a -> af();
echo '<br>';
$a -> aff();
abstract class Person{
protected $name;
protected function __construct($name='欧阳克')
{
$this -> name =$name;
}
public function getName(){
return $this->name;
}
abstract protected function setName($v);
}
class stu extends Person{
public function __construct($name = '欧阳克')
{
parent::__construct($name);
}
public function setName($v)
{
$this ->name = $v;
}
}
$s = new stu('猪哥');
echo 'PHP中文网创始人'. $s->getName().'<br>';
$s ->setName('灭绝师太');
echo '前端讲师'.$s->getName().'<br>';
echo '<hr>';
<?php
interface V{
const LXR ='欧阳克';
public function setFuel($fuel);
public function setPurpose($Purpose);
}
class Car implements V{
public $fuel;
public $Purpose;
//原来这里加了个构造方法但是系统报错了,删去后就解决了但是不是很明白为什么?
// 必须实现的接口方法
public function setFuel($fuel){
$this -> fuel=$fuel;
}
public function setPurpose($Purpose)
{
$this -> Purpose=$Purpose;
}
public function getInfo(){
return '用'.$this -> fuel.'汽油然后'.$this->Purpose;
}
}
$car = new Car;
$car ->setFuel('98#');
$car ->setPurpose('一路向北');
echo $car -> getInfo();
抽象类:只能被继承,不能实例化,必须在子类实现
abstract:定义抽象方法、抽象类
实现抽象方法的子类方法可见性不能低于抽象方法原定义
接口:interface指定某个类必须实现的方法,但不需要定义方法
仅出现:方法与常亮,必须是public方法
implements:类实现接口的关键字
抽象和接口的区别:
抽象可以有普通方法,成员变量
接口不可以有普通方法,不可以有成员变量