php中的接口与抽象类及接口与抽象类的区别-php教程

资源魔 40 0

正在php中接口形象类、Final、Static几个咱们用到的相称的简略特地是年夜型网站架构时城市有用到了,明天咱们来看一篇对于php中形象类、Final、Static的例子。

1. 接口
(1)对接口的应用是经过要害字implements
(2)接口不克不及界说成员变量(包罗类动态变量),能界说常量
(3)子类必需完成接口界说的一切办法
(4)接口只能界说不克不及完成该办法
(5)接口不结构函数
(6)接口中的办法以及完成它的类默许都是public类型的
2. 形象类
(1)对形象类的应用是经过要害字extends
(2)不克不及被实例化,能够界说子类必需完成的办法
(3)子类必需界说父类中的一切形象办法,这些办法的拜访管制必需以及父类中同样(或许更为宽松)
(4)如一个类中有一个形象办法,则该类必需界说为形象类
(5)形象类能够有结构函数
(6)形象类中的办法能够应用private,protected,public来润饰。
(7)一个类能够同时完成多个接口,但一个类只能承继于一个形象类。
3. Final类/办法
(1)final类不克不及被承继
(2)final办法不克不及被重写
4. Static类/办法
(1)能够没有实例化类而间接拜访
(2)动态属性不成以由工具经过->操作符来拜访,用::形式挪用

<?php 
# 接口
interface Human{ 
    const TEST_CONST = "test const"; // 界说常量
    // public $v; // error,不克不及界说变量 
    // static $count; // error,不克不及界说变量 
    public function speak(); 
    public function walk(); 
    public function run(); 
} 
# 形象类
abstract class Father implements Human{
    public function construct(){ 
        echo "father init n"; 
    }
    abstract public function walk(); // 形象办法
    public function speak(){ 
        echo "father speak skill n";
    }
    public function run(){
        echo "father run skill n"; 
    }
} 
# 非形象类
class Mother implements Human{
    public function construct(){
        echo "mother init n";
    }
    # 这里必需完成walk办法 
    public function walk(){ 
        echo "mother walk skill n"; 
    }
    public function speak(){
         echo "mother speak skill n"; 
    }
    public function run(){ 
        echo "mother run skill n"; 
    } 
}
class Son extends Father{ 
    public function walk(){
         echo "son walk skill. n"; 
    }
    public function speak($name = ''){
         echo "son: ". $name ." speak skill. n"; 
    }
    # 拜访管制必需以及父类中同样(或许更为宽松) 
    protected function sport(){ 
        echo "son sport skill. n"; 
    }
    final public function notTeach(){ 
        echo 'son has not to teach skill'; 
    } 
}
 
class Daughter extends Mother{
    public function run($name = ''){ 
        echo "daughter run skill. n"; 
    }
}
final class GrandChild extends Son{
    # 拜访管制必需以及父类中同样(或许更为宽松) 
    public function sport(){ 
        echo "GrandChild sport skill. n"; 
    }
    # Cannot override final method Son::notTeach() 
    // public function notTeach(){} // error 
}
 
#  Class Orphan may not inherit from final class (GrandChild) 
// class Orphan extends GrandChild{}  // error
$son = new Son(); 
$son->speak("Suly"); 
$daughter = new Daughter(); 
$daughter->run('Lily');
$grandChild = new GrandChild();
$grandChild->sport();

形象类以及接口的区分

一、对接口的应用是经过要害字implements。对形象类的应用是经过要害字extends。当然接口也能够经过要害字extends承继。
二、接口中不成以申明成员变量(包罗类动态变量),然而能够申明类常量。形象类中能够申明各类类型成员变量,完成数据的封装。(另JAVA接口中的成员变量都要申明为public static final类型)
三、接口不结构函数,形象类能够有结构函数。

四、接口中的办法默许都是public类型的,而形象类中的办法能够应用private,protected,public来润饰。

五、一个类能够同时完成多个接口,但一个类只能承继于一个形象类。

形象类仍是接口
假如要创立一个模子,这个模子将由一些严密相干的工具采纳,就能够应用形象类。假如要创立将由一些没有相干工具采纳的性能,就应用接口。
假如必需从多个起源承继行为,就应用接口。
假如晓得一切类城市同享一个公共的行为完成,就应用形象类,并正在此中完成该行为。

保举教程:《PHP教程》

以上就是php中的接口与形象类及接口与形象类的区分的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!