`

PHP的抽象类、接口的区别和选择

阅读更多

区别:

1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。

2、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。(另JAVA接口中的成员变量都要声明为public static final类型)

 

  1. <?php   
  2. abstract class Father {  
  3.     function meth1() {  
  4.         echo "meth1...<br>";  
  5.     }  
  6.     abstract function meth2();  
  7.     public $var1="var1";  
  8.     public static $var2="var2";  
  9.     const Var3="Var3";  
  10. }  
  11. class Son extends Father {  
  12.     function meth2() {  
  13.         echo "meth2 of Son...<br>";  
  14.     }  
  15. }  
  16. $s=new Son();  
  17. echo $s->var1."<br>";  
  18. echo Father::$var2."<br>";  
  19. echo Father::Var3."<br>";  
  20.   
  21.   
  22. Interface IFather {  
  23.     //public $iVar1="iVar1";        此处接口定义中不能包含成员变量  
  24.     //public static $iVar2="iVar2"; 此处接口定义中不能包含静态变量  
  25.     const iVar3="iVar3";  
  26.     function iMeth1();  
  27. }  
  28. Class ISon implements IFather {  
  29.     function iMeth1() {  
  30.         echo "iMeth1...<br>";  
  31.     }  
  32. }  
  33. $is=new ISon();  
  34. echo IFather::iVar3;  
  35. ?>  


3、接口没有构造函数,抽象类可以有构造函数。

 

4、接口中的方法默认都是public类型的,而抽象类中的方法可以使用private,protected,public来修饰。

5、一个类可以同时实现多个接口,但一个类只能继承于一个抽象类。

 

抽象类还是接口。

  • 如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建将由一些不相关对象采用的功能,就使用接口。
  • 如果必须从多个来源继承行为,就使用接口。
  • 如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。


来源:http://blog.csdn.net/fanteathy/article/details/7309966

分享到:
评论

相关推荐

    PHP抽象类与接口的区别实例详解

    尽管抽象类和接口都可以实现代码的复用,但它们之间存在一些本质的区别。接下来,我们将详细解析这些区别,并通过实例来加深理解。 首先,我们来看一下抽象类。抽象类可以定义抽象方法,这些方法没有具体的实现,只...

    PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类、接口的区别与选择。分享给大家供大家参考,具体如下: 区别: 1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。 2、...

    php多态和抽象类,php教程

    通过观看这个视频,学习者可以了解如何声明和使用接口,以及接口如何与多态和抽象类结合,以增强代码的可扩展性和模块化。 最后,"LAMP兄弟连 原创PHP、LAMP视频下载地址列表.html"可能是课程资源的列表,帮助学习...

    PHP抽象类与接口的区别详解

    对于面向对象开发,抽象类与接口这两个东西是比较难理解的;就算是对于有一定经验的程序员来说也如此。下面根据自己的理解来讲述一下这两个东西,如有什么不对的,还望不吝赐教。 抽象类:是基于类来说,其本身就是...

    PHP抽象类和接口用法实例详解

    本文实例讲述了PHP抽象类和接口用法。分享给大家供大家参考,具体如下: 前言 对于oop,估计大多数人并不陌生。有些人除PHP外也学习不少其他语言,会发现php的不同之处,可能语法极其丑陋,但并不妨碍它成为世界上...

    详解PHP的抽象类和抽象方法以及接口总结

    在PHP编程语言中,抽象类和抽象方法以及接口是面向对象编程中的重要概念,它们在定义类的继承结构和方法实现上起着至关重要的作用。 首先,我们来看抽象类的概念。抽象类是一种特殊的类,它可以包含抽象方法,也...

    php抽象类和接口知识点整理总结

    但接口和抽象类也存在一些关键区别。接口中的所有成员(方法和属性)都必须是public的,这是因为接口的目的是定义一个通用的协议或契约,供其他类实现。接口中不可以声明变量,只能声明常量。接口使用interface...

    浅析php中抽象类和接口的概念以及区别

    复制代码 代码如下://抽象类的定义:abstract class ku{ //定义一个抽象类 abstract function kx(); ……}function aa extends ku{ //实现抽象类的方法 function kx(){ echo ‘sdsf’; }}//使用方法$aa=new ...

    php 接口类与抽象类的实际作用

    在PHP编程中,接口类(interface)和抽象类(abstract class)是面向对象设计的重要概念,它们用于规范类的行为和促进代码的复用。这两者虽然有相似之处,但各有其独特的用途。 首先,让我们来看看PHP接口类。接口...

    php5的抽象方法和抽象类的理解

    在PHP5中,引入了面向对象编程的两个关键概念:抽象方法和抽象类。这两个特性大大增强了PHP作为面向对象语言的能力,使得开发者可以构建更加健壮、可扩展的代码结构。 **抽象方法** 是指在类中声明但没有具体实现的...

    深入分析php中接口与抽象类的区别

    综上所述,接口和抽象类在PHP中的区别主要体现在以下几点: 1. 接口是一种行为规范,它声明了类应该做什么,但不指定如何去做;而抽象类则提供了一部分功能的实现。 2. 接口不可以包含方法的实现;而抽象类可以...

    php中的抽象方法和抽象类

    虽然抽象类和接口都可以用来强制子类实现某些方法,但两者之间存在区别。接口只定义方法签名,不允许有任何实现,而抽象类可以包含部分实现。一个类可以实现多个接口,但只能继承一个抽象类。因此,根据设计需求...

Global site tag (gtag.js) - Google Analytics