前两天去一公司面试,他们给了一份试卷来考核php的知识.整份试卷大至不是太难,就是最后有一题是"任意写一抽象类并写出调用过程",由于,平常对抽象类的概念不很清楚,所以,也不敢乱写...唉,没pass..
这两天有点时间,看了看抽象类的资料,写一些对抽象方法和抽象类的理解,也算是亡羊补牢吧 :(
一. 面向对象程序通过类的分层结构构建起来. 在单重继承语言如PHP中, 类的继承是树状的. 一个根类有一个或更多的子类,再从每个子类继承出一个或更多下一级子类. 当然,可能存在多个根类,用来实现不同的功能. 在一个良好设计的体系中,每个根类都应该有一个有用的接口, 可以被应用代码所使用. 而抽象类就可以提供多个实用的接口.如果你建立了一个只有抽象方法的类,那么你就定义了一个接口(interface).
在抽象类中定义的方法,也都是抽象方法,当然,抽象方法与普通的方法不一样,它只是子类中普通方法的一个占位符(只是占个地主不启作用),没有任何代码,也没有"{}"包含,而是以";"结束的.
- abstract class aaa{
-
- abstract function bbb();
-
- }
当然,如果一个类中有一个或多个抽象的方法,那么这个类就成了抽象类.抽象类不能实例化,只能继承,然后,实例化子类.值得注意的是,它的子类必须覆写所有方法(all method),这样,子类就成为普通的类,才可以实例化.否则,子类中只要有一个抽象方法,那么子类必须声明是抽象类,在class 关键字前加上 abstract.
二.抽象的类的声明方法:
1.使用abstact 限定语.
-
- abstract class aaa {
-
- abstract function bbb();
-
- abstract function ccc();
- }
-
-
- class childfromaaa extends aaa {
-
-
- public function bbb(){
-
- }
- public function ccc(){
-
- ....
- }
- }
-
- $child = new childfromaaa;
-
2. PHP中有interface 和implements关键字. 你可以用interface来代替抽象类, 用implements来代替extends来说明你的类定义或使用一个接口.
-
- interface Foo {
- function a(Foo $foo);
- }
-
- interface Bar {
- function b(Bar $bar);
- }
-
-
-
- class FooBar implements Foo, B ar {
- function a(Foo $foo) {
-
- }
-
- function b(Bar $bar) {
-
- }
- }
-
- $a = new FooBar;
- $b = new FooBar;
-
- $a->a($b);
- $a->b($b);
当然,你采用那种方式,完全取决于个人的喜好而已.抽象类我现在就理解这么多,如果有更深层的运用,慢慢来学习吧^_^
- php5类.rar (58.9 KB)
- 描述: php5新增的类特性,很有帮助理解的...
- 下载次数: 24
分享到:
相关推荐
抽象类是一种不能被实例化的特殊类,它通常用来作为其他类的基类,提供共同的属性和方法。在PHP中,使用`abstract`关键字声明一个类为抽象类,并可以定义抽象方法(没有方法体的方法)。子类继承抽象类时,必须实现...
通过继承抽象类,子类不仅可以获得父类的属性和方法,还可以通过覆盖(重写)父类的抽象方法来实现自定义的行为。这使得代码更加灵活,能够适应不同的场景和需求。 5. **接口与抽象类的对比**: 虽然抽象类和接口...
在PHP的面向对象编程(OOP)中,抽象类和抽象方法是两个核心概念,它们在多态性和设计模式中起到关键作用。本文将深入探讨这两个概念,以及它们在实际编程中的应用。 **抽象方法** 抽象方法是仅声明而未定义的方法...
2. 方法和属性:抽象类可以包含变量(属性)、常量和方法,接口只能定义常量和方法,不能定义变量。 3. 方法的访问控制:抽象类中的方法可以有任意的访问控制修饰符,而接口中的方法默认都是公开的。 4. 实现的限制...
在PHP编程语言中,抽象方法和抽象类是面向对象编程(OOP)的重要概念,它们在构建可扩展和模块化的代码结构中起着关键作用。本文将深入探讨这两个概念,并通过实例来阐述它们的使用。 **一、抽象方法** 抽象方法是...
- 抽象类适合当一个类有很多共同的属性和方法,但某些方法需要在子类中有不同的实现时。 - 接口则更适用于定义类必须实现的特定行为,而无需关心实现细节。 **实际应用示例**: - 设计模式中,例如工厂模式,可能会...
在PHP中使用abstract关键字定义抽象类和抽象方法的语法如下: ```php abstract class ClassName { // 定义抽象方法 abstract protected function method_name(); // 普通方法 public function another_method...
在PHP中,抽象类和接口是面向对象编程的重要组成部分,它们允许程序员设计可扩展的代码结构,并确保某些功能和行为的实现。 首先,让我们讨论什么是抽象方法。在PHP中,抽象方法是一种没有实现的方法体,只能在抽象...
在面向对象编程(OOP)中,抽象类和抽象方法是核心概念之一,它们在设计模式和软件工程中扮演着重要角色。为了深入理解这些概念,我们需要先了解它们的定义和用途。 抽象方法是一种特殊的方法,它只包含方法的声明...
例如,如果我们有一个图形库,抽象工厂可以声明创建圆形和矩形的方法,具体工厂类则分别返回PHP实现的圆形和矩形对象。 接下来,我们探讨装饰器模式,这是另一个重要的设计模式。装饰器模式允许我们在运行时动态地...
对于面向对象开发,抽象类与接口这两个东西是比较难理解的;就算是对于有一定经验的程序员来说也如此。下面根据自己的理解来讲述一下这两个东西,如有什么不对的,还望不吝赐教。 抽象类:是基于类来说,其本身就是...
本文实例讲述了PHP抽象类和接口用法。分享给大家供大家参考,具体如下: 前言 对于oop,估计大多数人并不陌生。有些人除PHP外也学习不少其他语言,会发现php的不同之处,可能语法极其丑陋,但并不妨碍它成为世界上...
除了必须被继承并实现所有抽象方法以外,抽象类还可以包含具体的属性和方法。这些具体的方法可以有方法体,也可以没有。然而,即使有方法体,这些方法体也是在子类的上下文中被执行的。 总结一下PHP抽象方法和普通...
抽象类可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。它的主要目的是为了减少代码重复,提供一种基类,让子类可以继承并重用基类中的代码,同时也可以强制子类实现抽象方法。例如: ```php ...
3. **抽象类和方法的使用规则** - 抽象类不能被实例化,只能作为其他类的基类。 - 抽象方法在子类中必须有具体实现,否则子类也会变成抽象类。 - 如果一个类包含抽象方法,那么该类必须声明为抽象类。 - 抽象类...
本篇文章将详细介绍如何在PHP中抽象出一个类来实现Smarty模板引擎的分页功能。 首先,理解分页的基本概念。分页是将大量数据分为多个部分(页)进行展示,每一页显示一定数量的数据条目,通过页码导航让用户按需...