抽象类
1.abstract 定义抽象方法或抽象类
2.类中只要有一个抽象方法, 该类就应该声明为抽象类
3.抽象类只能被继承,不能实例化,并且抽象方法必须在子类实现
<?php
//定义抽象类
abstract class People{
public $name;
public $age;
public function __construcct($name,$age)
{
$this->name = $name;
$this->age = $age;
}
abstract public function getInfo();
}
class Student extends People{
public function __construcct($name,$age)
{
//手动重写父类的构造方法
parent::__construcct($name,$age);
}
public function getInfo(){
echo '我的名字是:'.$this->name . ',我今年' . $this->age . '岁';
}
}
$a = new Student('李四',20);
$a->getInfo();
接口
定义接口:interface
类实现接口的关键字:implements
<?php
//定义接口
interface People{
public function getInfo();
}
class Student implements People{
public $name;
public $age;
public function __construcct($name,$age)
{
$this->name = $name;
$this->age = $age;
}
public function getInfo(){
echo '我的名字是:'.$this->name . ',我今年' . $this->age . '岁';
}
}
$a = new Student('李四',20);
$a->getInfo();
总结:
1、抽象类不能实例化、类中抽象方法,在子类中必须全部实现
2、接口中方法必须全部实现
3、接口类和抽象类的区别:
抽象类 :
1.类中至少有一个抽象方法
2.前面加abstract
接口:
1.成员属性为常量const
2.前面不用加abstract
3.类中全部为抽象方法,接口抽象方法为public
4、接口类和抽象类 共同点:
1.本身不能被实例化,必须继承或者引用
2.继承和引用后,抽象方法必须重载才能实例化