`
purpen
  • 浏览: 796656 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

    前两天去一公司面试,他们给了一份试卷来考核php的知识.整份试卷大至不是太难,就是最后有一题是"任意写一抽象类并写出调用过程",由于,平常对抽象类的概念不很清楚,所以,也不敢乱写...唉,没pass..

    这两天有点时间,看了看抽象类的资料,写一些对抽象方法和抽象类的理解,也算是亡羊补牢吧 :(

 一. 面向对象程序通过类的分层结构构建起来. 在单重继承语言如PHP中, 类的继承是树状的. 一个根类有一个或更多的子类,再从每个子类继承出一个或更多下一级子类. 当然,可能存在多个根类,用来实现不同的功能. 在一个良好设计的体系中,每个根类都应该有一个有用的接口, 可以被应用代码所使用. 而抽象类就可以提供多个实用的接口.如果你建立了一个只有抽象方法的类,那么你就定义了一个接口(interface).

    在抽象类中定义的方法,也都是抽象方法,当然,抽象方法与普通的方法不一样,它只是子类中普通方法的一个占位符(只是占个地主不启作用),没有任何代码,也没有"{}"包含,而是以";"结束的.

  1. abstract class  aaa{   
  2.   
  3.     abstract function bbb();   
  4.   
  5. }  

 当然,如果一个类中有一个或多个抽象的方法,那么这个类就成了抽象类.抽象类不能实例化,只能继承,然后,实例化子类.值得注意的是,它的子类必须覆写所有方法(all method),这样,子类就成为普通的类,才可以实例化.否则,子类中只要有一个抽象方法,那么子类必须声明是抽象类,在class 关键字前加上 abstract.

  二.抽象的类的声明方法:

      1.使用abstact 限定语.

  1. //定义抽象类aaa为基类   
  2. abstract class aaa {   
  3.   
  4.     abstract function bbb();   
  5.   
  6.     abstract function  ccc();   
  7. }   
  8. //定义普通类childfromaaa   
  9. //继承aaa抽象类   
  10. class childfromaaa extends aaa {   
  11.   
  12.    //重写所有抽象类中的方法   
  13.    public function bbb(){   
  14.     //.....     
  15.    }   
  16.    public function ccc(){   
  17.     //...   
  18.     ....   
  19.    }   
  20. }   
  21. //实例化子类   
  22. $child = new childfromaaa;  //right   
  23.   

 2. PHP中有interface 和implements关键字. 你可以用interface来代替抽象类, 用implements来代替extends来说明你的类定义或使用一个接口.

  1. //定义抽象基类   
  2. interface Foo {    
  3.    function a(Foo $foo);    
  4. }    
  5. //定义另一个抽象类   
  6. interface Bar {    
  7.    function b(Bar $bar);    
  8. }    
  9. //定义子类childfromaaa   
  10. //继承aaa抽象类(接口)   
  11. //实现多类继承   
  12. class FooBar implements Foo, B ar {    
  13.    function a(Foo $foo) {    
  14.        // ...    
  15.    }    
  16.   
  17.    function b(Bar $bar) {    
  18.        // ...    
  19.    }    
  20. }    
  21.   
  22. $a = new FooBar;    
  23. $b = new FooBar;    
  24.   
  25. $a->a($b);    
  26. $a->b($b);    

当然,你采用那种方式,完全取决于个人的喜好而已.抽象类我现在就理解这么多,如果有更深层的运用,慢慢来学习吧^_^

 

  • php5类.rar (58.9 KB)
  • 描述: php5新增的类特性,很有帮助理解的...
  • 下载次数: 24
分享到:
评论

相关推荐

    php多态和抽象类,php教程

    抽象类是一种不能被实例化的特殊类,它通常用来作为其他类的基类,提供共同的属性和方法。在PHP中,使用`abstract`关键字声明一个类为抽象类,并可以定义抽象方法(没有方法体的方法)。子类继承抽象类时,必须实现...

    php中的抽象方法和抽象类

    通过继承抽象类,子类不仅可以获得父类的属性和方法,还可以通过覆盖(重写)父类的抽象方法来实现自定义的行为。这使得代码更加灵活,能够适应不同的场景和需求。 5. **接口与抽象类的对比**: 虽然抽象类和接口...

    深入解读php中关于抽象(abstract)类和抽象方法的问题分析

    在PHP的面向对象编程(OOP)中,抽象类和抽象方法是两个核心概念,它们在多态性和设计模式中起到关键作用。本文将深入探讨这两个概念,以及它们在实际编程中的应用。 **抽象方法** 抽象方法是仅声明而未定义的方法...

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

    2. 方法和属性:抽象类可以包含变量(属性)、常量和方法,接口只能定义常量和方法,不能定义变量。 3. 方法的访问控制:抽象类中的方法可以有任意的访问控制修饰符,而接口中的方法默认都是公开的。 4. 实现的限制...

    php抽象方法和抽象类实例分析

    在PHP编程语言中,抽象方法和抽象类是面向对象编程(OOP)的重要概念,它们在构建可扩展和模块化的代码结构中起着关键作用。本文将深入探讨这两个概念,并通过实例来阐述它们的使用。 **一、抽象方法** 抽象方法是...

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

    - 抽象类适合当一个类有很多共同的属性和方法,但某些方法需要在子类中有不同的实现时。 - 接口则更适用于定义类必须实现的特定行为,而无需关心实现细节。 **实际应用示例**: - 设计模式中,例如工厂模式,可能会...

    PHP 抽象方法与抽象类abstract关键字介绍及应用

    在PHP中使用abstract关键字定义抽象类和抽象方法的语法如下: ```php abstract class ClassName { // 定义抽象方法 abstract protected function method_name(); // 普通方法 public function another_method...

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

    在PHP中,抽象类和接口是面向对象编程的重要组成部分,它们允许程序员设计可扩展的代码结构,并确保某些功能和行为的实现。 首先,让我们讨论什么是抽象方法。在PHP中,抽象方法是一种没有实现的方法体,只能在抽象...

    php面向对象全攻略 (十二) 抽象方法和抽象类

    在面向对象编程(OOP)中,抽象类和抽象方法是核心概念之一,它们在设计模式和软件工程中扮演着重要角色。为了深入理解这些概念,我们需要先了解它们的定义和用途。 抽象方法是一种特殊的方法,它只包含方法的声明...

    抽象工厂模式 - PHP版

    例如,如果我们有一个图形库,抽象工厂可以声明创建圆形和矩形的方法,具体工厂类则分别返回PHP实现的圆形和矩形对象。 接下来,我们探讨装饰器模式,这是另一个重要的设计模式。装饰器模式允许我们在运行时动态地...

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

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

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

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

    php抽象方法和普通方法的区别点总结

    除了必须被继承并实现所有抽象方法以外,抽象类还可以包含具体的属性和方法。这些具体的方法可以有方法体,也可以没有。然而,即使有方法体,这些方法体也是在子类的上下文中被执行的。 总结一下PHP抽象方法和普通...

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

    抽象类可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。它的主要目的是为了减少代码重复,提供一种基类,让子类可以继承并重用基类中的代码,同时也可以强制子类实现抽象方法。例如: ```php ...

    (第21讲) PHP面向对象开发的学习(五)

    3. **抽象类和方法的使用规则** - 抽象类不能被实例化,只能作为其他类的基类。 - 抽象方法在子类中必须有具体实现,否则子类也会变成抽象类。 - 如果一个类包含抽象方法,那么该类必须声明为抽象类。 - 抽象类...

    抽象出一个类用于php,smarty分页

    本篇文章将详细介绍如何在PHP中抽象出一个类来实现Smarty模板引擎的分页功能。 首先,理解分页的基本概念。分页是将大量数据分为多个部分(页)进行展示,每一页显示一定数量的数据条目,通过页码导航让用户按需...

Global site tag (gtag.js) - Google Analytics