这篇文章给大家分享的是有关php面向对象编程基础的案例的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
在一些小的项目中,会频繁接触到类的继承,封装和多态等特性,利用的是的类本身的功能。
但是在大型项目中,经常会采用类接口来实现,因为接口不涉及类的具体功能实现,但是接口会限制类的功能。
一个复杂大型的软件涉及中,需要由众多的功能类构成,这些功能类需要由多个程序员共同完成,其中软件架构师需要指定涉及模式,团队分工等工作。
这就带来编程统一性的问题,如何保证关键的功能能够很好地实现,这就需要一个能够统筹兼顾的设计接口,通常使用的是类接口,虽然php能够采用多种方法。
类的封装,基础和多态等特性,涉及到的都是类的功能,一般在小型项目中使用类的功能来实现。
但是在大型项目中,软件需要由众多的功能,那就需要有众多的功能类,而这些功能类通常由多个程序员共同来完成,那么众多的程序员之间,就出现了编程统一的问题,如何保证软件的功能能够很好地实现?
这就需要在软件设计之前,事先定义好一组功能,然后程序员按照这些功能,来逐个实现。
在php中能够采用的方法有很多种,通常使用类接口来实现。在接口中定义一组功能,但是功能的实现,需要程序员逐个来实现,从而保障了软件功能的完整性。
1,接口的定义
接口不是功能类,因此不能在接口类中定义具体的功能实现方法。
接口定义时使用接口关键字,命名格式:I +接口名称。
通常接口中定义的成员必须为功能类的方法,不能是功能类的成员属性。
需要注意几点:
①接口成员必须具有全局访问权限,因此不能添加访问修饰符;
②接口成员不能使用常量、静态方法等类属性;
③接口成员不能定义构造方法。
④接口可以像类一样被继承,继承之后,子接口就会得到父接口的全部成员。
2,接口的实现
接口只能进行功能定义,而不能实现具体的功能,如果要实现接口中定义的功能,必须通过普通的功能类来实现。
格式:实现+接口名称
注意:在功能类中必须要定义接口中所有的成员方法,不能遗漏一个。
下面通过简单的实例来演示
在接口文件中,定义两个接口Imyinterce, Imys (Imyinterface子接口)
& lt; php ?/* * *定义接口Imyinterface */接口Imyinterface { add1()函数; 函数add2 ($ s); 函数add3 (t=0美元); }//接口的继承 接口Imys延伸Imyinterface { 德尔()函数; 编辑()函数; 功能更新(str); 功能选择(id、str美元); } ?在
然后定义一个功能类,来实现接口,如果还没想好功能如何实现,可以通过空方法来实现,不能遗漏,否则会报错,提示功能类包含一个抽象方法,该抽象方法必须要实现。
这里仅实现子接口Imy中的更新和选择两个方法,其余方法暂未实现,使用空方法来代替。
& lt; php ? 要求“。/Imyinterface.interface.php"; 类MyClass实现Imys { 函数add1 () {//空方法,暂无具体实现方法,虽然功能类继承Imys,但是接口Imys又继承Imyinterface,因此Imyinterface里的方法也必须要实现 } 函数add2 (str) {//同上 } 函数add3 (t=0美元){//同上 } 函数德尔(){//空方法,暂无具体实现方法 } 函数编辑(){//空方法,暂无具体实现方法 } 函数更新($ str=白址?{ 返回str美元; } 函数选择(id=0, str=美元“字符串“){ 返回id。str美元; } } ?在
测试代码
& lt; php ? 要求“。/MyClass.class.php"; 头(“内容类型:text/html; charset=utf-8"); mys美元=new MyClass (); echo $ mys→选择(); ?在
浏览效果
上面介绍了在大型软件设计中,为了规范和统一程序,通常使用接口。但是接口只能定义程序抽象的功能,而不提供具体的功能,在接口中不能定义普通的类成员,如常量、静态属性等普通成员。
抽象类是为类继承而设计的,可以在抽象类中定义普通的类成员,在这一点上抽象类就比接口灵活多了。