毕业设计网
开发环境 |

php类中接口应用

1、接口的介绍与创建
=====(1)抽象类  第八节中讲过。在这里在讲一哈====

(1)抽象就是无法确切的说明,但又有一定的概念或者名称,在PHP中声明一个抽象 类或者方法我们需要使用adstract关键字
(2)抽象方法和抽象类的定义:
        (1)类中至少有一个抽象方法,并且类和方法前都要加 abstract
        (2)抽象方法不允许有{ }
(3)抽象类和方法使用规则
        (1)不能被实例化,只能被继承
  (2)继承后派生类,要把抽象方法进行,重载 才能被实例化
  (3)重载抽象类中的抽象方法时候,要去掉abstract ,  并先继承 class 派生类 extends 抽象类(基类){}  按继承方法继承类
            难后function 抽象方法名{} 来进行重载
    */
/*
 (2)=====接口======
(1)接口:就是一种成员属性-》1接口类方法为抽象方法  2接口类属性为常量  的的特殊抽象类,
       (1)、接口类中抽象方法前不用加abstract,但是和抽象类的方法一样同样也不要{}
       (2)、接口(类)中方法全部为抽象方法,接口(类)方法属性为public
       (3)、成员属性必须为常量 CONST(常量和变量不同,一次定义,不能在进行修改,不需要实例化也能 在任何位置用双冒号形式输出)
    (4)、创建接口使用interface 关键字  -》使用方法interface  接口名{}
    (5)举个例子
    interface jiekou {    //创建接口类
    //创建接口类属性
    const NAME="名字";    //创建接口类属性 为 常量NAME
       //创建接口类方法
    function fun1();      //创建接口类抽象方法 前面无需要abstract
       function fun2();      //创建接口类抽象方法  前面无需要abstract
   
    }
   
    */
/*
(3)====抽象类 和 接口的共同点====
      (1)本身都不能被实例化,
      (2)1,抽象类继承后  或者 2,接口被引用后 必须将他们重载其中的类方法,才能被实例化,必须一次性重载所有的抽象方法
   */
/*
(4)总结,接口属于一种特殊的抽象类,所以在这里我称接口为,接口类
 */

/* 2、接口的引用与规范
      (1) 接口引用区 (类继承关键字 extends,只能是单一性继承),而
       接口可以使用关键字:implements 多个引用并用逗号  ,  分开。
   (2)假设有3个接口 jiek1 jiek2 jiek3
          (1)普通类来引用接口   ----引用接口后需要实重载才能实例化
    class  plei  implements  jiek1,jiek2,jiek3{
    ...........
    }
    (2)抽象类来引用接口   ----抽象类 引用接口后不能重载方法(因为依然还是一个抽象类,需要被非抽象的派生类继承后并重载才能实

例化
   abstract class  clei  implements  jiek1,jiek2,jiek3{
    ...........
    }
    (3)同时继承基类(父类) 并引用接口的例子  (要注意是先继承 后接口,单继承多接口)
    class  le2  extends le1  implements jiek1,jiek2,jiek3 {
    ..........................
    }
    (4)接口与接口继承(继承是单一性的 所以继承接口和继承类也只能单独继承一个)
     interface  jiek2  extends jiek1 {    //这个创建接口用 interface  继承用 extends
     ........
     }
 */
//实在里子==========================================

/*类的接口应用实例
*   interface  创建接口
*   implements  引用接口
*/

 

//创建接口类1----------------- 
interface  jiek1 {   //创建接口类1
//创建接口类属性常量(接口类中只能有常量不能用变量)
const NAMEA1="接口1";  //创建接口类属性常量(常量最好大写,并且没有$符号)
//创建接口类方法 (接口类方法,是抽象方法,但是不加abstract,但是和抽象类的方法一样同样也不要{})
 function fu1();     //创建接口类抽象方法1
 function fu2();     //创建接口类抽象方法1
}
//创建接口类2------------
interface  jiek2 {   //创建接口类2
//创建接口类属性常量(接口类中只能有常量不能用变量)
const NAMEA2="接口2";  //创建接口类属性常量(常量最好大写,并且没有$符号)
//创建接口类方法 (接口类方法,是抽象方法,但是不加abstract,但是和抽象类的方法一样同样也不要{})
 function fu3();     //创建接口类抽象方法3
 function fu4();     //创建接口类抽象方法4
}

//用普通类来引用接口
class ptlei implements jiek1,jiek2{   //用普通类来引用多个接口
//重载 接口的抽象方法一 (引用抽象方法需要先重载在实例化--必须重载所有的抽象方法)
function fu1(){
echo "重载接口的抽象方法一 <br>";
}
//重载 接口的抽象方法二 (引用抽象方法需要先重载在实例化)
function fu2(){
echo "重载接口的抽象方法二 <br>";
}
//重载 接口的抽象方法三 (引用抽象方法需要先重载在实例化)
function fu3(){
echo "重载接口的抽象方法三 <br>";
}
//重载 接口的抽象方法四 (引用抽象方法需要先重载在实例化)
function fu4(){
echo "重载接口的抽象方法四 <br>";
}

}

//实例化 被引用接口后的类
$slh= new ptlei();     //实例化接口类

//输出实例化接口后的属性常量(不需要实例化也能 在任何位置用双冒号形式输出)
echo ptlei::NAMEA1."<br>";     //输出接口类属性常量1
echo ptlei::NAMEA2."<br>";     //输出接口类属性常量2

//输出实例化接口后的方法
$slh->fu1();           //输出 实例化接口类后的类方法1
$slh->fu2();           //输出 实例化接口类后的类方法2
$slh->fu3();           //输出 实例化接口类后的类方法3
$slh->fu4();           //输出 实例化接口类后的类方法4

//单继承多接口 (先继承后引用接口)-----------------------------------------------------------

//创建接口类3------------
interface  jiek3 {   //创建接口类2
//创建接口类属性常量(接口类中只能有常量不能用变量)
const NAMEA3="接口3";  //创建接口类属性常量(常量最好大写,并且没有$符号)
//创建接口类方法 (接口类方法,是抽象方法,但是不加abstract,但是和抽象类的方法一样同样也不要{})
 function fu5();     //创建接口类抽象方法5
 function fu6();     //创建接口类抽象方法6
}

//创建接口类3------------
interface  jiek4 {   //创建接口类2
//创建接口类属性常量(接口类中只能有常量不能用变量)
const NAMEA4="接口4";  //创建接口类属性常量(常量最好大写,并且没有$符号)
//创建接口类方法 (接口类方法,是抽象方法,但是不加abstract,但是和抽象类的方法一样同样也不要{})
 function fu7();     //创建接口类抽象方法7
 function fu8();     //创建接口类抽象方法8
}
//类继承+并引用接口
class ptlei2 extends ptlei  implements jiek3,jiek4{

//重载 接口的抽象方法五 (引用抽象方法需要先重载在实例化)
function fu5(){
echo "重载接口的抽象方法五 <br>";
}
//重载 接口的抽象方法六 (引用抽象方法需要先重载在实例化)
function fu6(){
echo "重载接口的抽象方法六 <br>";
}
//重载 接口的抽象方法七 (引用抽象方法需要先重载在实例化)
function fu7(){
echo "重载接口的抽象方法七 <br>";
}
//重载 接口的抽象方法八 (引用抽象方法需要先重载在实例化)
function fu8(){
echo "重载接口的抽象方法八 <br>";
}


}
//实例化继承后和被引用接口后的类
$slh2= new ptlei2();     //实例化继承类+引用接口后类
//输出实例化继承后和被引用接口后的类的属性常量(不需要实例化也能 在任何位置用双冒号形式输出)
echo ptlei2::NAMEA1."<br>";     //输出实例化继承后和被引用接口后的类属性常量1
echo ptlei2::NAMEA2."<br>";     //输出实例化继承后和被引用接口后的类属性常量2
echo ptlei2::NAMEA3."<br>";     //输出实例化继承后和被引用接口后的类属性常量3
echo ptlei2::NAMEA4."<br>";     //输出实例化继承后和被引用接口后的类属性常量4
//输出实例化继承后和被引用接口后的类的方法
$slh2->fu1();           //输出实例化继承后和被引用接口后的类方法1
$slh2->fu2();           //输出实例化继承后和被引用接口后的类方法2
$slh2->fu3();           //输出实例化继承后和被引用接口后的类方法3
$slh2->fu4();           //输出实例化继承后和被引用接口后的类方法4
$slh2->fu5();           //输出实例化继承后和被引用接口后的类方法5
$slh2->fu6();           //输出实例化继承后和被引用接口后的类方法6
$slh2->fu7();           //输出实例化继承后和被引用接口后的类方法7

以上是一部分介绍,如需要完整的资料或者如不符合您的要求,请联系技术人员qq:242219979咨询

上一篇:php面向对象多态的介绍与优势
下一篇:php类中常见关键字


版权所有 毕业设计网联系qq:242219979 © 2007-2022