好,今天我们要玩的东西比较多,所以要集中精力哦.我们已经通过将类实例化来创建了”春哥”、”曾哥”和”凤姐”,但是他们还不能说话、还不能发招,怎么办呢?这就需要我们通过访问类的内容来实现.所谓访问,也是个专业术语,为了方便大家记忆和理解,大家只需要记住:
我们要使用“春哥”的特性,实际上就是要访问“春哥”的属性;
我们要使用“春哥”的行为,实际上就是要访问“春哥”的方法。
从类的内部访问属性和方法,我们要用this关键字。
访问属性:
$this->属性的名称;
设置属性值(其实跟变量赋值是一个道理):
$this->属性的名称 = 属性的值;
访问方法:
$this->方法的名称();
从类的外部访问属性和方法,我们要使用对象的名称。
访问属性:
$对象的名称->属性的名称;
设置属性值(其实跟变量赋值是一个道理):
$对象的名称->属性的名称 = 属性的值;
访问方法:
$对象的名称->方法的名称();
注意:在访问时,属性的名称是不带$号的,这一点,在《PHP 和 MySQL Web开发》(第三版)一书中的有些例子是错误的,虽然这本书被称为PHP的“圣经”,但是无论什么样书都难免出现人为的失误,所谓人非圣贤,孰能无过?所以俗话说尽信书不如无书,同样的提醒正在看我这篇教程的初学者们,尽信我不如无我,最重要的还是要大家自己去思考,培养独立思考的能力,不是吗?
光看上面的内容可能很难看出什么来,这很正常,没有关系,下面我们马上通过实例来说明它们的作用。
首先我们完善角色类,让它拥有一切比较实际的功能,这时,我们就要用到内部访问来修改它了:
class Role //角色类
{
//属性部分
var $role_name; //角色的名字
var $role_sex; //角色的性别
var $role_skill; //角色的技能
//方法部分
function roleTalk() //角色说话
{
echo $this->role_name.'说:'.'我是一个'.$this->role_sex.'人<br />'; //输出:(角色的名字)说:我是一个(角色的性别)人
}
function roleFight() //角色发招
{
echo $this->role_name.'使出了一招:'.$this->role_skill.'<br />'; //输出:(角色的名字)使出了一招:(角色的技能)
}
}
为了方便讲解,每个方法里我只用了一个echo作为它的功能。当然如果你有时间和精力的话,可以去做一些更为复杂强大的功能。
接下来,如果我们要让“春哥”这个对象“活”起来,那么就要用外部访问了:
//别忘了要一定先new一个名称为brother_chun的对象哦 $brother_chun = new Role(); //设置属性 $brother_chun->role_name = '春哥'; //设置“春哥”的名字 $brother_chun->role_sex = '男'; //设置“春哥”的性别 $brother_chun->role_skill = '霸气菊花残'; //设置“春哥”的技能 //访问方法 $brother_chun->roleTalk(); //让“春哥”说话 $brother_chun->roleFight(); //让“春哥”发招
同理于“曾哥”和“凤姐”,为了方便大家查看,给出完整代码:
class Role //角色类
{
//属性部分
var $role_name; //角色的名字
var $role_sex; //角色的性别
var $role_skill; //角色的技能
//方法部分
function roleTalk() //角色说话
{
echo $this->role_name.'说:'.'我是一个'.$this->role_sex.'人<br />'; //输出:(角色的名字)说:我是一个(角色的性别)人
}
function roleFight() //角色发招
{
echo $this->role_name.'使出了一招:'.$this->role_skill.'<br /><br />'; //输出:(角色的名字)使出了一招(角色的技能)
}
}
//“春哥”横空出世
$brother_chun = new Role();
//设置属性
$brother_chun->role_name = '春哥';
$brother_chun->role_sex = '男';
$brother_chun->role_skill = '霸气菊花残';
//访问方法
$brother_chun->roleTalk();
$brother_chun->roleFight();
//“曾哥”横空出世
$brother_zeng = new Role();
//设置属性
$brother_zeng ->role_name = '曾哥';
$brother_zeng ->role_sex = '男';
$brother_zeng ->role_skill = '爷们菊花劫';
//访问方法
$brother_zeng ->roleTalk();
$brother_zeng ->roleFight();
//“凤姐”横空出世
$sister_feng = new Role();
//设置属性
$sister_feng ->role_name = '凤姐';
$sister_feng ->role_sex = '女';
$sister_feng ->role_skill = '知音故事会';
//访问方法
$sister_feng ->roleTalk();
$sister_feng ->roleFight();
春哥说:我是一个男人
春哥使出了一招:霸气菊花残曾哥说:我是一个男人
曾哥使出了一招:绵阳菊花劫凤姐说:我是一个女人
凤姐使出了一招:知音故事会
以此类推,你还可以让更多的人横空出世,让它们有不同的名字、不同的性别、不同的技能。
你也可以给它们加上其他的属性:比如攻击力、防御力、生命值、霸气值等等;
或者加上给它们加上其他的方法:比如会唱歌、会跳舞、会吃饭、会便便等等。
在这里由于时间和篇幅的关系,我们就不玩那么多了,大家要是有兴趣的话,自己下去慢慢玩吧。
这里着重讲一下this关键字的涵义,this顾名思义就是这个的意思,因为是在类的内部,它是被所有对象共用的,所以可以这么理解:这个对象调用了它,它就属于这个对象;哪个对象调用了它,它就属于哪个对象。
比如 $this->role_sex; 这句,“春哥”调用了它,在类的内部它就指“春哥”这个对象的性别;“曾哥”调用了它,在类的内部它就指“曾哥”这个对象的性别;“凤姐”调用了它,在类的内部它就指“凤姐”这个对象的性别,同理于其他。
好了,那么关于类最基本的玩法就介绍到这里,希望大家能够花一些宝贵的时间来慢慢消化一下今天我们玩过的东东。一定要好好消化哦,因为从下一玩开始,我们就要逐渐进入类的高级玩法了。
作者:hetty 首发地址:http://www.im286.com/thread-4823948-1-1.html
版权所有,转载时必须以链接形式注明作者和原始出处及本声明:KingLife@无忧岛
本文链接: http://www.islandcn.com/post/770.html
近期评论