您的位置:学习中国 推荐教程 正文
原作者:kuku 添加时间:2007-06-02 原文发表:2007-06-02 人气:4 来源:互联网

本文章共6228字,分4页,当前第2页,快速翻页:
 
-----------------------------------------------------------------------------------------------------------------------------------------------

本文提示:《PHP中实现面向对象编程(2)》是本站编辑们为广大网友精选的实用文章,本文阐述了关于文章的相关理论,相对来说专业性强,但是本文只是针对于某个问题提出的见解与论述,未必能辐射到相关问题的方方面面,所以本文处理问题的方法仅仅为您提供一些参考。更多问题请查阅学习中国网其他栏目哦.

-----------------------------------------------------------------------------------------------------------------------------------------------


所以可以用如下方法创建对象:

$obj=new Something(6);

  构造函数自动赋值 5 给成员变量 x, 构造函数和成员函数都是普通的PHP函数,所以你可以使用缺省参数。

function Something($x="3",$y="5")

  然后:

$obj=new Something(); // x=3 and y=5
$obj=new Something(8); // x=8 and y=5
$obj=new Something(8,9); // x=8 and y=9

  缺省参数的定义方法和 C++ 一样,因此你不能传一个值给 Y 但让 X 取缺省值,实参的传递是从左到右,当没有更多的实参时函数将使用缺省参数。

  只有当继承类的构造函数被调用后,继承类的对象才被创建,父类的构造函数没有被调用,这是PHP不同其他面向对象语言的特点,因为构造函数调用链是面向对象编程的特点。如果你想调用基类的构造函数,你不得不在继承类的构造函数中显式调用它。这样它能工作是因为在继承类中父类的方法全部可用。

function Another() {
$this->y=5;
$this->Something(); //explicit call to base class constructor.
}

?>

  在面向对象编程中一种好的机制是使用抽象类,抽象类是一种不能实例化而是用来给继承类定义界面的类。设计师经常使用抽象类来强制程序员只能从特定的基类来继承,所以就能确定新类有所需的功能,但在PHP中没有标准的办法做到这一点,不过:

  如果你在定义基类是需要这个特点,可以通过在构造函数中调用 "die",这样你就可以确保它不能实例化,现在定义抽象类的函数并在每个函数中调用 "die",如果在继承类中程序员不想重定义而直接调用基类的函数,将会产生一个错误。

  此外,你需要确信因为PHP没有类型,有些对象是从基类继承而来的继承类创建的,因此增加一个方法在基类来辨别类(返回 "一些标识")并验证这一点,当你收到一个对象作为参数派上用场。 但对于一个恶棍程序没用办法,因为他可以在继承类中重定义此函数,通常这种办法只对懒惰的程序员奏效。当然,最好的办法是防止程序接触到基类的代码只提供界面。

  重载在PHP中不被支持。在面向对象编程中你可以通过定义不同参数种类和多少来重载一个同名成员函数。PHP是一种松散的类型语言,所以参数类型重载是没有用的,同样参数个数不同的办法重载也不能工作。

  有时候,在面向对象编程中重载构造函数很有用,所以你能以不同的方式创建不同的对象(通过传递不同的参数个数)。一个小巧门可以做到这一点:

class Myclass {
function Myclass() {
$name="Myclass".func_num_args();
$this->$name();
//Note that $this->$name() is usually wrong but here
//$name is a string with the name of the method to call.
}

function Myclass1($x) {
code;
}
function Myclass2($x,$y) {
code;
}
}

?>

  通过这种办法可以部分达到重载的目的。

$obj1=new Myclass(1); //Will call Myclass1
$obj2=new Myclass(1,2); //Will call Myclass2

多态性
 

本文章更多内容<<上一页 - 1 - 2 - 3 - 4 - 下一页>>
本页地址
相关文章

PHP中通过Web执行C/C++应用程序
PHP安装攻略:安装并配置PHP
PHP应用分页显示制作详细讲解
MySQL数据库基础教程
Php利用java解析xml
使用PHP实现动态网页
使用PHP和XSL stylesheets转换XML文档
自己写的mysql类
在php中输出html代码
关于session的问题集锦解决方案
SSI使用详解(二)
SSI使用详解(一)
PHP和MySQL开发的8个技巧
虚拟主机中对PHP的特殊设置
提升PHP速度全攻略
多php服务器实现多session并发运行
PHP中对数据库操作的封装
用PHP制作饼图调查表
用PHP和MySQL保存和输出图片
“渐变窗口”有绝招

相关评论


本文章所属分类:首页 推荐教程   PHP编程