最近,我发现自己离基础还很远。 工作之余,我重新整理了一下关于PHP的基础知识,重新整理强化应用。
界面
界面特点:
接口的定义是关键字,接口的使用是通过关键字进行的,多个接口之间用逗号分隔。 不能定义成员变量(包括类静态变量),只能定义常量。 子类必须实现接口定义的所有方法。 接口只能定义该方法,不能实现,方法(行为)是抽象的。 该接口没有构造函数。 接口中的方法和实现它的类默认都是类型,无法实例化
永远记住一个特性:接口是定义行为规范(意味着子类必须按照其规则重写所有方法)
继承方式有两种
非抽象类继承
// 定义接口 A
interface A
{
// 特点一:只能定义常量
// public $a = '1234'; error
const TEST_ConST ="567";
// 特点二:接口里面的所有方法都是public 公共 并且只能定义不能实现
public function speak();
public function walk();
public function run();
//特点四:方法只能定义不能实现
// public function tools()
// {
// echo 1; error
// }
}
// 继承接口A
class Info implements A
{
public $a = '1234';
public function __construct()
{
$this->a = "789";
}
public function speak()
{
echo ‘重写方法’;
}
public function walk()
{
echo '必须重写接口的walk方法';
}
public function run()
{
echo '必须重写接口的run方法';
}
}
抽象类继承
abstract class Father implements A
{
// 公共行为
abstract public function fly(); // 抽象方法
abstract public function walk(); // 抽象方法
// 当抽象类重写了接口方法时候,那么继承抽象类的子类可以不需要重写接口方法了
public function speak(){
echo "father speak skill n";
}
abstract protected function jums();
// 重写接口方法
public function error()
{
echo '继承属性';
}
}
抽象类
特征:
抽象类定义使用关键字:子类继承使用关键字:子类必须在父类中定义所有抽象方法,并且这些方法的访问控制必须与父类中相同(或更宽松),抽象方法只定义,没有完成。 无法实例化,可以定义子类必须实现的抽象方法(只有定义为抽象方法的才必须实现)。 如果类中有抽象方法,则该类必须定义为抽象类,并且该类必须声明为: 类可以有构造函数,抽象类中的方法可以用,, 修饰。 一个类可以同时实现多个接口,但一个类只能继承一个抽象类。 抽象类和接口之间的区别在于关键字的使用。 抽象类的使用是通过关键字进行的。 接口定义和抽象类定义不能声明接口中的成员变量(包括类静态变量),但可以声明类常量。 抽象类中可以声明各种类型的成员变量,实现数据封装。 (可以声明为final类型)接口没有构造函数,抽象类可以有构造函数。
接口中的方法默认都是类型,而抽象类中的方法可以用,,修饰。
一个类可以同时实现多个接口,但一个类只能继承一个抽象类。
抽象类或接口
如果您想创建一个由一些密切相关的对象采用的模型,您可以使用抽象类。 当您想要创建一些不相关的对象将采用的功能时,可以使用接口。
当行为必须从多个源继承时使用接口。
如果您知道所有类将共享一个公共行为实现,请使用抽象类并在其中实现该行为。