PHP中的抽象类与接口详细介绍

  介绍

这篇文章主要介绍PHP中”的抽象类与接口详细介绍”,在日常操作中,相信很多人在PHP中的抽象类与接口详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“PHP中的抽象类与接口详细介绍”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

<节>
  ,
<强>抽象类定义

抽象类的特点:

    <李> <节>顾名思义,它是抽象的,当然也就是不能被实例化的,所以,抽象类一般是作为我们的基类来进行定义的。 <李> <>部分在一个类中,只要有一个方法被定义为抽象的,那么这个类就必须加上抽象的关键字成为抽象类。 <李> <节>被定义为抽象的方法只声明其调用方式,不能定义其具体的功能实现。 <李> <节>子类必须定义父类中的所有抽象方法,这些方法的访问控制必须和父类一致或者更为宽松。 <李> <节>方法的调用方式必须匹配,即类型和所需参数数量必须一致。子类实现的抽象方法可以增加参数但必须有默认值。
 <代码>抽象类{
,,公共函数显示(){
,,,,$ this→getName ();
,,,,回声PHP_EOL;
,,}

,,保护文摘getName()函数;
,美元,公共抽象函数getAge(年龄);
}

类ChildA1扩展一个{
,,公共职能getName () {
,,,,呼应“我# 39;m ChildA1";
,}
大敌;,公共职能getAge(年龄){
,,,,呼应“年龄是“。美元年龄;
,,}
}

类ChildA2扩展一个{
,,保护getName()函数{
,,,,呼应“我# 39;m ChildA2";
,}
大敌;,公共职能getAge(年龄、年美元=& # 39;& # 39;){
,,,回声“年龄是“。美元时代。& # 39;布朗& # 39;。美元;
,,}
}

ca1美元=new ChildA1 ();
ca1→美元显示();
ca1→美元getAge (18);

游离钙美元=new ChildA2 ();
美元ca2→显示();
游离钙→美元getAge (2000),
  ,   ,
<强>接口定义

接口的特点:

    <李> <节>可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 <李> <节>就像定义一个标准的类一样,但其中定义所有的方法都是空的。 <李> <节>接口中定义的所有方法都必须是公的有,这是接口的特性。 <李> <节>类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。 <李> <节>类要实现接口,必须使用和接口中所定义的方法完全一致的方式,否则会导致致命错误 <李> <节>接口也可以继承,通过使用扩展操作符 <李> <节>接口中也可以定义常量。接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖
 <代码>界面B1 {
,,const B1_NAME=& # 39;接口b1 # 39;;
,,getName()函数;
,美元,函数getAge(年龄);
}

界面B2延伸B1 {
,,显示()函数;
}

界面B3 {
,,getSchool()函数;
}

类ChildB实现B2, B3 {
,,函数getName () {
,,,,呼应“我# 39;m ChildB";
,}
大敌;,函数getAge(年龄、年美元=& # 39;& # 39;){
,,,,呼应“年龄是“。美元年龄;
,}
大敌;,函数显示(){
,,,,$ this→getName ();
,,,,回声PHP_EOL;

,,,,$ this→getAge (1997),
,,,,回声PHP_EOL;

,,,自我,回声:B1_NAME;
,,,,回声PHP_EOL;
,}
大敌;,
,函数getSchool () {
,,,,呼应“北京University"研究;
,,,,回声PHP_EOL;
,,}
}

$ b=新ChildB ();
$ b→显示();
b→美元getSchool ();
  ,   ,
<强>抽象类和接口的区别

从上面我们可以总结出一些抽象类和接口的区别:

    <李> <节>抽象类的子类遵循继承原则,只能有一个父类,但一个类可以实现多个接口 <李> <>节抽象类中可以有非抽象的已经实现的方法;接口中全是抽象的方法,都是方法定义 <李> <>节抽象类中方法和变量的访问控制自己定义;接口中只能是公共的

那么问题来了,这两货哪个好?抱歉,这个问题可没有答案,它们的作用不同。抽象类可以作为基类,为子类提供公共方法,并定制公共的抽象让子类来实现。而接口则是更高层次的抽象,它可以让我们依赖于抽象而不是具体的实现,为软件开发带来更多的扩展性。

PHP中的抽象类与接口详细介绍