Zend权威认证试题讲解]第二章-用PHP4进行面向对象编程
- 格式:doc
- 大小:59.00 KB
- 文档页数:11
PHP复习知识点第一章:初识PHP第一节:计算思维回顾1.计算思维:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。
计算思维最根本的内容,即其本质(Essence)是抽象(Abstraction)和自动化(Automation)。
可以概括为:合理抽象、高校算法,主要过程包括:问题简单化(即合理抽象),然后构建解决问题的模型(即高效计算),最后,通过编程的手段输入到计算机内,通过计算机来完成一系列复杂的运算过程(即自动化)。
2.计算思维日常生活例子:考虑下面日常生活中的事例:当你女儿早晨去学校时,她把当天需要的东西放进背包,这就是预置和缓存;当你儿子弄丢他的手套时,你建议他沿走过的路寻找,这就是回推;在什么时候停止租用滑雪板而为自己买一付呢?这就是在线算法;在超市付帐时,你应当去排哪个队呢?这就是多服务器系统的性能模型;为什么停电时你的电话仍然可用?这就是失败的无关性和设计的冗余性;完全自动的大众图灵测试如何区分计算机和人类,即CAPTCHA[注1]程序是怎样鉴别人类的?这就是充分利用求解人工智能难题之艰难来挫败计算代理程序。
第二节:了解PHP1.PHP的概念:PHP 是一种HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。
2.PHP的应用:1)PHP的脚本:1)服务器;2)命令器;3)桌面应用程序。
2)PHP的功能:能够生成动态页面内容能够创建、打开、读取、写入、删除以及关闭服务器上的文件能够接收表单数据能够发送并取回cookies能够添加、删除、修改数据库中的数据能够限制用户访问网站中的某些页面能够对数据进行加密3.PHP的特性(优势):1)、开放的源代码;2)、PHP是免费码;3)、php的快捷性;4)、跨平台性强;5)、效率高;6)、图像处理;7)、面向对象;8)、专业专注。
php面向对象知识点PHP是一种广泛使用的服务器端脚本语言,它可以用来开发动态网站和 Web 应用程序。
在现代的 Web 开发中,面向对象编程已经成为了一种必不可少的技能,因此熟练掌握 PHP 面向对象编程知识点也是 Web 开发者必须具备的技能之一。
本文将围绕“PHP面向对象知识点”这个话题,从以下几个方面进行阐述。
一、类和对象在 PHP 中,类是一种用户自定义的数据类型,而对象则是类的实例。
类可以定义属性和方法,其中属性用于存储对象的信息,方法用于操作对象的状态。
创建类的语法格式如下:```class ClassName{// 属性和方法声明}```二、类的继承类的继承是一种常见的面向对象编程概念,它允许新创建的类继承已有类的属性和方法。
在 PHP 中,使用关键字 extends 来实现类的继承。
例如:```class ParentClass{public $name;public function introduce(){echo "My name is ".$this->name;}}class ChildClass extends ParentClass{public function say(){echo "Hello.";}}$childObj=new ChildClass();$childObj->name="Lily";$childObj->introduce(); // My name is Lily$childObj->say(); // Hello.```三、访问控制符在类中,访问控制符用于限制属性和方法的访问权限,它有三种类型:public、protected 和 private。
其中,public 表示公共的,任何人均可访问;protected 表示受保护的,只有类和其子类中才可以访问;private 表示私有的,只有在声明它的类内部才能访问。
第1章PHP开篇习题一、填空题1.Apache的httpd服务程序使用的是【80 】端口。
2.在进行软件开发时有两种基本架构,B/S架构和【C/S】架构。
3.URL的英文全称是【】,中文名称为【统一资源定位符】。
Uniform Resource Locator4.【HTTP 】协议是计算机硬件与软件之间数据交换的格式。
5.【HTTP】表示传输数据所使用的协议,【WWW】表示要请求的服务器主机名。
二、判断题1.使用PHP写好的程序,在Linux和Windows平台上都可以运行。
(√)2.PHP可以支持MySQL数据库,但不支持其它的数据库。
(×)3.PHP有很多流行的MVC框架,这些框架可以使PHP的开发更加快捷。
(√)4.Zend Studio是PHP中常用的IDE(集成开发环境)。
(√)5.进行PHP程序开发时,可以借助软件和工具来提高效率。
(√)三、选择题1.下列选项中,不是URL地址中所包含的信息是(D )。
A.主机名B.端口号C.网络协议D.软件版本2.PHP是一种(A)的编程语言。
A.解释型B.编译型C. 两者都是D. 两者都不是3.PHP是个网站开发中非常流行的脚本语言,其流行的原因不包含(C )。
A.易学B.易用C.易调试D.易扩展4.PHP与Linux、Apache和MySQL一起共同组成了一个强大的Web应用程序平台,下列选项中为该平台简称的是(B )。
A. WAMPB. LAMPC. LNMPD. WNMP5.在下列选项中,哪些不属于PHP的突出特点(B )。
A开源免费 B.开发成本高C.跨平台性D.支持多种数据库四、简答题1.请简要说明PHP的突出特点是什么?1.开源免费2跨平台性3.面向对象.快捷性5.支持多种数据库4.第2章基本语法习题一、填空题1.任何一个程序文件的php代码的开始和结束都要使用【<?php 】和“?>”进行标记。
2.PHP中,多行注释以【/* 】开始,以【*/ 】结束。
面向对象测试题及答案一、选择题(每题2分,共20分)1. 面向对象编程(OOP)的核心概念不包括以下哪一项?A. 类B. 继承C. 多态D. 过程2. 在Java中,以下哪个关键字用于定义类?A. classB. typeC. structD. interface3. 下列哪个选项不是Java中访问控制的关键字?A. publicB. privateC. protectedD. global4. 封装是面向对象编程的一个重要特性,它主要指的是:A. 将数据和操作数据的方法组合在一起B. 将所有数据都设为公开访问C. 只允许通过特定的方法访问数据D. 将数据和方法分离5. 在Java中,以下哪个不是构造方法的特点?A. 与类名相同B. 没有返回类型C. 可以重载D. 可以被继承6. 继承在面向对象编程中允许:A. 一个类只能继承一个类B. 一个类可以继承多个类C. 一个类可以继承多个接口D. 一个类可以同时继承多个类和接口7. 接口在Java中的主要作用是:A. 定义类B. 实现多继承C. 定义方法的实现D. 定义方法的签名8. 以下哪个是Java中实现多态的方式?A. 继承B. 接口C. 重载D. 重写9. 抽象类在Java中不能:A. 被实例化B. 包含抽象方法C. 包含具体方法D. 被继承10. 下列哪个不是Java集合框架中接口?A. ListB. SetC. MapD. Array二、简答题(每题5分,共30分)1. 简述面向对象编程的三大特性。
2. 解释什么是多态,并给出一个Java中多态的例子。
3. 什么是封装?封装在Java中是如何实现的?4. 什么是接口?接口和抽象类有什么区别?5. 什么是构造方法?构造方法的作用是什么?6. 什么是继承?继承在Java中是如何实现的?三、编程题(每题25分,共50分)1. 编写一个Java程序,定义一个名为`Car`的类,包含以下属性和方法:- 属性:品牌(String类型),颜色(String类型),速度(int 类型)- 方法:启动汽车(startCar),加速(accelerate),减速(decelerate)2. 在上述`Car`类的基础上,创建一个名为`ElectricCar`的子类,继承`Car`类,并添加一个额外的属性:电池电量(int类型),并重写`startCar`方法以显示电动汽车启动的信息。
面向对象程序设计郑州大学网考资料及答案一、考试资料面向对象程序设计是计算机科学中的一种重要方法,它以对象为基础,将数据和操作封装在对象中,通过对象之间的关系和交互来实现程序的功能。
以下是一些关于面向对象程序设计的考试资料:1、对象的概念和分类:对象是面向对象程序设计的核心概念,可以分为类对象和实例对象。
类对象是类的实例,实例对象是类的具体表现。
2、封装性:面向对象程序设计中的封装性是指将数据和操作封装在对象中,通过访问控制机制来限制外部对内部数据的访问。
3、继承性:继承性是指子类可以继承父类的属性和方法,同时还可以添加自己特有的属性和方法,实现代码的重用和扩展。
4、多态性:多态性是指同一消息可以被不同的对象接收并执行不同的操作,使得程序具有更好的灵活性和可扩展性。
5、抽象性:抽象性是指通过抽象类和接口来定义对象的通用属性和方法,具体的实现细节由子类来完成,从而实现对象的抽象和分离。
6、常用面向对象编程语言:Java、C++、Python等语言都是支持面向对象编程的常用语言,其语法和特性各不相同,但都遵循面向对象的基本思想。
7、常用设计模式:设计模式是解决常见问题的经验总结,包括单例模式、工厂模式、观察者模式等,可以帮助开发者更好地设计和实现程序。
二、考试答案以下是一些关于面向对象程序设计的考试答案:1、什么是对象?答:对象是现实世界中事物的抽象,是属性及其方法的集合。
2、什么是封装性?答:封装性是指将数据和操作封装在对象中,通过访问控制机制来限制外部对内部数据的访问。
它有助于保护对象内部数据不被外部随意修改,同时提供了安全性和稳定性。
3、什么是继承性?答:继承性是指子类可以继承父类的属性和方法,同时还可以添加自己特有的属性和方法,实现代码的重用和扩展。
它有助于减少代码冗余,提高代码的可维护性和可扩展性。
4、什么是多态性?答:多态性是指同一消息可以被不同的对象接收并执行不同的操作,使得程序具有更好的灵活性和可扩展性。
第1篇一、基础语法与变量1. 问题:PHP中的变量命名规则是什么?答案:PHP中的变量命名规则如下:- 变量名必须以字母或下划线开头。
- 变量名可以包含字母、数字和下划线。
- 变量名是区分大小写的。
- 变量名不能包含空格或点。
2. 问题:如何声明一个PHP变量?答案:在PHP中,可以使用以下方式声明一个变量:```php$variable = "Hello, World!";```或者简写为:```php$variable = "Hello, World!";```3. 问题:PHP中的变量类型有哪些?答案:PHP中的变量类型包括:- 整数(Integer)- 浮点数(Float)- 字符串(String)- 布尔值(Boolean)- 数组(Array)- 对象(Object)- 资源(Resource)- NULL4. 问题:如何检查一个变量的类型?答案:可以使用`gettype()`函数来检查一个变量的类型:```php$var = 10;echo gettype($var); // 输出:integer```二、数据类型转换1. 问题:如何在PHP中进行数据类型转换?答案:在PHP中,可以使用以下方式进行数据类型转换:- 使用类型转换运算符(例如:(int) $var, (float) $var, (string) $var)- 使用`settype()`函数- 使用类型强制转换运算符(例如:$var = (int) $var;)2. 问题:如何将字符串转换为整数?答案:可以使用类型转换运算符或`settype()`函数:```php$string = "123";$int = (int) $string; // 或者 $int = settype($string, "integer"); ```3. 问题:如何将整数转换为字符串?答案:可以使用类型转换运算符:```php$int = 123;$string = (string) $int;```三、条件语句与循环1. 问题:PHP中的条件语句有哪些?答案:PHP中的条件语句包括:- `if`语句- `if...else`语句- `switch`语句2. 问题:如何使用`if`语句?答案:```phpif (条件) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}```3. 问题:如何使用`switch`语句?答案:```phpswitch ($expression) {case 值1:// 当表达式与值1匹配时执行的代码 break;case 值2:// 当表达式与值2匹配时执行的代码 break;default:// 默认情况下执行的代码}```4. 问题:PHP中的循环有哪些?答案:PHP中的循环包括:- `for`循环- `while`循环- `do...while`循环- `foreach`循环5. 问题:如何使用`for`循环?答案:```phpfor (初始化表达式; 条件表达式; 更新表达式) { // 循环体}```四、函数与面向对象编程1. 问题:如何在PHP中定义一个函数?答案:```phpfunction 函数名(参数列表) {// 函数体}```2. 问题:如何调用一个函数?答案:```php函数名(参数列表);```3. 问题:PHP中的函数有哪些返回值?答案:PHP中的函数可以返回以下类型的值:- 字符串(String)- 整数(Integer)- 浮点数(Float)- 布尔值(Boolean)- 数组(Array)- 对象(Object)- 资源(Resource)- NULL4. 问题:如何在PHP中定义一个类?答案:```phpclass 类名 {// 类属性和方法}```5. 问题:如何在PHP中使用构造函数和析构函数?答案:构造函数用于在创建对象时初始化对象,析构函数用于在对象销毁时执行清理工作。
程序设计题库及答案详解一、选择题1. 下列哪个选项不是面向对象编程的三大特性?A. 封装B. 继承C. 多态D. 过程化答案:D2. 在Java中,以下哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A3. 以下哪个是Python中的循环结构?A. forB. whileC. both A and BD. none of the above答案:C二、填空题1. 程序设计中的________是用来定义数据的属性和方法的集合。
2. 在C语言中,________关键字用于声明一个函数。
答案:void 或者 int(根据函数返回类型而定)3. 在JavaScript中,________方法用于将字符串转换为数字。
答案:parseInt 或 parseFloat(根据转换类型而定)三、简答题1. 请简述什么是递归函数,并给出一个简单的递归函数示例。
答案:递归函数是指在函数内部调用自身的函数。
递归函数通常用于解决可以分解为相同问题的子问题的问题。
以下是一个计算阶乘的递归函数示例:```cint factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}```2. 解释什么是堆栈,并说明它们在程序设计中的应用。
答案:堆栈是两种不同的数据结构。
堆是一种优先队列,其中最大或最小元素可以在对数时间内被找到。
栈是一种遵循后进先出(LIFO)原则的数据结构。
在程序设计中,堆栈广泛应用于内存管理、函数调用、表达式求值、回溯算法等领域。
四、编程题1. 编写一个函数,实现字符串的反转。
```pythondef reverse_string(s):return s[::-1]```2. 给定一个整数数组nums,请找出数组中最长递增子序列的长度。
答案:```pythondef lengthOfLIS(nums):if not nums: return 0dp = [1] * len(nums)for i in range(1, len(nums)):for j in range(i):if nums[i] > nums[j]:dp[i] = max(dp[i], dp[j] + 1)return max(dp)```五、案例分析题1. 描述一个场景,其中使用多线程可以提高程序的效率,并解释为什么。
问题1.选择合适的答案填入空白处PHP 是一种______脚本语言,基于______引擎。
PHP 最常被用来开发动态的______内容,此外,它同样还可被用来生成______(以及其他)文档。
A.动态,PHP,数据库,HTMLB.嵌入式,Zend,HTML,XMLC.基于Perl 的,PHP,Web,静态D.嵌入式,Zend,Docbook 文档,MySQLE.基于Zend 的,PHP,图像,HTML2.以下哪种标签不是PHP 起始/结束符?A.<% %>B.C.D.E.3.以下代码哪个不符合PHP 语法?A.$_10B.${―MyVar‖}C.&$somethingD.$10_somethingsE.$aVaR4.运行以下代码将显示什么?define(myvalue, "10");$myarray[10] = "Dog";$myarray[] = "Human";$myarray['myvalue'] = "Cat";$myarray["Dog"] = "Cat";print "The value is: ";print $myarray[myvalue]."\n";?>2A.The Value is: DogB.The Value is: CatC.The Value is: HumanD.The Value is: 10E.Dog5.print()和echo()有什么区别?A.print()能作为表达式的一部分,echo()不能B.echo()能作为表达式的一部分,print()不能C.echo()能在CLI(命令行)版本的PHP 中使用,print()不能E.没有区别:两个函数都打印文本!6.以下脚本输出什么?$a = 10;$b = 20;$c = 4;$d = 8;$e = 1.0;$f = $c + $d * 2; 20$g = $f % 20; 0$h = $b - $a + $c + 2;16$i = $h << $c;$j = $i * $e;print $j;?>A.128B.42C.242.0D.256E.3427.如何给变量$a,$b 和$c 赋值才能使以下脚本显示字符串―Hello, World!‖? $string = "Hello, World!";$a = ?;false3$b = ?;$c = ?;if($a) {if($b && !$c) {echo "Goodbye Cruel World!";} else if(!$b && !$c) {echo "Nothing here";}}else {if(!$b) {if(!$a && (!$b && $c)) {echo "Hello, World!";} else {echo "Goodbye World!";}} else {}}?>A.False, True, FalseB.True, True, FalseC.False, True, TrueD.False, False, TrueE.True, True, True8.以下脚本输出什么?$array = '0123456789ABCDEFG';$s = '';for ($i = 1; $i < 50; $i++) {$s .= $array[rand(0,strlen ($array) - 1)]; => $s = $array[rand(0,16)] }echo $s;?>A.50 个随机字符组成的字符串B.49 个相同字符组成的字符串,因为没有初始化随机数生成器C.49 个随机字符组成的字符串D.什么都没有,因为$array 不是数组4E.49 个字母‗G‘组成的字符串9.哪种语句结构用来表现以下条件判断最合适?if($a == 'a') {somefunction();} else if ($a == 'b') {anotherfunction();} else if ($a == 'c') {dosomething();} else {donothing();}?>A.没有default 的switch 语句B.一个递归函数C.while 语句D.无法用别的形式表现该逻辑E.有default 的switch 语句10.要修改每个元素的值,如何遍历$myarray 数组最合适?$myarray = array ("My String","Another String","Hi, Mom!");A.用for 循环B.用foreach 循环C.用while 循环D.用do…while 循环E.办不到!11.考虑如下代码片段:define("STOP_AT", 1024);$result = array();/* 在此处填入代码*/{5$result[] = $idx;}print_r($result);?>标记处填入什么代码才能产生如下数组输出?Array{[0] => 1[1] => 2[2] => 4[3] => 8[4] => 16[5] => 32[6] => 64[7] => 128[8] => 256[9] => 512}A.foreach($result as $key => $val)B.while($idx *= 2)C.for($idx = 1; $idx < STOP_AT; $idx *= 2)D.for($idx *= 2; STOP_AT >= $idx; $idx = 0)E.while($idx < STOP_AT) do $idx *= 212.为用户定义函数is_leap()选择一个合适的函数声明。
尽管PHP4的OOP性能不强,但它还是能够被用来构建可行的面向对象的代码结构——只要你知道对象模型的缺陷,并且小心的处理它们。
PHP5在对象的处理方面做了很多改变,你或许会因此更倾向于完全忽略PHP4。
但事实上,许多用OOP的程序员从很早以前就开始用老版本的PHP编写软件了。
所以,大量的OOP 代码早已存在,甚至在人们跳到PHP5上进行开发之前。
本章不仅考察你对面向对象知识的总体掌握,还包括对PHP4特有的OOP实现机制的认识。
问题1.对象的蓝图是什么?答案:____________2.以下代码执行后,数组$a->my_value中储存的值是什么?(三选)复制PHP内容到剪贴板PHP代码:<?phpclass my_class{var$my_value= array();function my_class($value){$this->my_value[] =$value;}function set_value($value){$this->$my_value=$value;}}$a= new my_class('a');$a->my_value[] ='b';$a->set_value('c');$a->my_class('d');?>A.cB.bC.aD.dE.e3.如何让类中的某些方法无法在类的外部被访问?A.把类声明为privateB.把方法声明为privateC.无法实现D.编写合适的重载方法(overloading method)4.哪种OOP设计模式能让类在整个脚本里只实例化一次?A.MVC模式B.抽象工厂模式(Abstract factory)C.单件模式(Singleton)D.代理模式(Proxy)E.状态模式(State)5.借助继承,我们可以创建其他类的派生类。
那么在PHP中,子类最多可以继承几个父类?A.1个B.2个C.取决于系统资源D.3个E.想要几个有几个6.以下脚本近似的表示了一种在PHP4中无法实现的特性,请问这个特性叫什么?复制PHP内容到剪贴板PHP代码:<?phpclass my_class{function my_funct($my_param){user_error("Please define me",E_ERROR);}function b(){return10;}}?>A.多重继承B.接口C.抽象方法D.Private方法E.函数重载(function overloading)7.假设定义了一个testclass类,它的构造函数的函数名是什么?A.__constructB.initializeC.testclassD.__testclassE.只有PHP5才支持构造函数8.一个类如何覆盖默认的序列化机制?A.使用__shutdown和__startup方法B.调用register_shutdown_function()函数C.使用__sleep()和__wakeup()方法D.无法覆盖默认序列化机制E.使用ob_start()将类放入输出缓冲中9.以下哪些面向对象的概念无法在PHP4中实现?@抽象类@Final类@Public、private、protected(PPP)方法@接口A.抽象类B.PPP方法C.PPP方法和接口D.以上所有都不可用E.以上所有都可用10.如何在类的内部调用mymethod方法?A.$self=>mymethod();B.$this->mymethod();C.$current->mymethod();D.$this::mymethod()E.以上都不对11.以下脚本输出什么?复制PHP内容到剪贴板PHP代码:<?phpclass my_class{var$my_var;function_my_class($value){$this->my_var=$value;}}$a= new my_class(10);echo$a->my_var;?>A.10B.NullC.EmptyD.什么都没有E.一个错误12.以下脚本输出什么?复制PHP内容到剪贴板PHP代码:<?phpclass my_class{var$value;}$a= new my_class;$a->my_value=5;$b=$a;$b->my_value=10;echo$a->my_value;?>A.10B.5C.2D.NullE.什么都没有13.以下脚本输出什么?复制PHP内容到剪贴板PHP代码:<?php$global_obj=null;class my_class{var$value;function my_class(){global$global_obj;$global_obj= &$this; }}$a= new my_class;$a->my_value=5;$global_obj->my_value=10; echo$a->my_value;?>A.5B.10C.什么都没有D.构造函数将报错E.51014.考虑如下一段代码,执行时,$eight_tenths->to_string方法返回的字符串是8/10而不是希望的4/5,为什么?复制PHP内容到剪贴板PHP代码:<?phpclass fraction{var$numerator;var$denominator;function fraction($n,$d) {$this->set_numerator($n);$this->set_denominator($d);}function set_numerator($num) {$this->numerator= (int)$num;}function set_denominator($num) {$this->denominator= (int)$num;}function to_string() {return"{$this->numerator} / {$this->denominator}";}}function gcd($a,$b) {return ($b>0) ?gcd($b,$a%$b) :$a;}function reduce_fraction($fraction) {$gcd=gcd($fraction->numerator,$fraction->denominator);$fraction->numerator/=$gcd;$fraction->denominator/=$gcd;}$eight_tenths= new fraction(8,10);/* Reduce the fraction */reduce_fraction($eight_tenths);var_dump($eight_tenths->to_string());?>A.reduce_fraction函数必须返回一个值B.reduce_fraction函数必须接受一个整型值C.gcd函数有问题D.必须通过引用的方式传递$eight_tenths对象E.对象的实例不能传递给方法以外的其他结构。
15.以下代码是做什么的?复制PHP内容到剪贴板PHP代码:<?phprequire_once("myclass.php");myclass::mymethod();?>A.静态调用mymethod方法B.生成myclass的实例并调用mymethod方法C.产生一个语法错误D.默认myclass类最后被创建出的实例并调用mymethod() E.调用名为myclass::mymethod()的函数16.PHP中有静态类变量吗?A.有B.没有17.以下脚本输出什么?复制PHP内容到剪贴板PHP代码:<?phpclass a{function a($x=1){$this->myvar=$x;}}class b extends a{var$myvar;function b($x=2){$this->myvar=$x;parent::a();}}$obj= new b;echo$obj->myvar;?>A.1B.2C.一个错误,因为没有定义a::$myvarD.一个警告,因为没有定义a::$myvarE.什么都没有18.如何即时加载一个类?A.使用__autoload魔术函数B.把它们定义为forward类C.实现一个特殊的错误处理手段D.不可能E.用有条件限制的include来包含它们19.__________提供了一个高性能的解决面向对象中重复出现的问题的方案?答案:__________20.以下脚本输出什么?复制PHP内容到剪贴板PHP代码:<?phpclass a{function a(){echo'Parent called'; }}class b{function b(){}}$c= new b();?>A.Parent calledB.一个错误C.一个警告D.什么都没有答案速查1.类2.BCD3.C4.C5.A6.C7.C8.C9.D10.B11.D12.B13.A14.D15.A16.B17.A18.D19.设计模式20.D答案详解1.类是对象的蓝图(对象是类的实例)。
2.正确答案是B、C和D。
set_value方法使用了错误的表达式$this->$my_value,因此该方法实际上是空的(这在PHP5里会导致一个错误,但在PHP4中不会。
——译者注)。
3.答案是C。
PHP4中无法限制对类成员的访问,而在PHP5中则可以通过private关键字实现。
4.单件模式可以限制一个类被实例化的次数。
5.尽管其他编程语言允许多重继承,但在PHP的对象模型中却不可以。
因此答案是A。
6.方框中的代码表现的是抽象方法(abstrace method)的实现。
如果这个类继承自其他类,而my_funct方法在子类中被调用时没有覆盖,代码将抛出一个错误。
虽然只是近似的实现了抽象方法,但在PHP4有限的对象模型中,这已经做得很好了。
7.PHP5有统一的构造函数(__construct()),但在PHP4中,构造函数就是和类有相同名称的方法。
对于名为testclass的类,它的构造函数就是testclass()。