已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > HTML/CSS/JS

标题: 听企鹅讲禅(二):类和对象的禅机

作者: @Ta

时间: 2011-12-03

点击: 4724

上次我们讲到了:类是一系列的共同点,对象是我们所要研究的事物!可能大家就要问了:
class 机器狗
{
四只腿
一只尾
会说自己的名字
}
这张三,李四,王五,它们还有名字?这也是个共点吧!
在第一贴我说了:类就是一系列共同点!(我刚才又看了下第一贴,有点改动,希望有助于大家理解)
但是机器狗都有名字,也是共同点吧,可是名字不一样!那咱这样写!
class 机器狗

name= ?//名字不知道哈
leg=4//4条腿
canspeak(){我叫name}//name是变量
}这个时候重点come了!
以前我们都是研究着对象来找共同点,你是否想过有了这些共同点,你是能造出一个真正的机器狗吗?name的确是一个共同点,可是它们的name并不相同啊!我们就不得不name=?我们能不能在创建对象时,再给它一个名字?答案是当然了!咦!我还不明白,那把name也写进看看
class 机器狗 
{
  name=王八//名字是王八
  leg=4//4条腿  
会说话(){我叫王八}
}
类是写好了,怎么根据机器狗类来造个“实体机器狗”?
[bog=new 机器狗()//new就是创建,制造的意思,$dog就是“实体”,它有名字,叫王八,有四只腿,会说我叫王八
$dog2=new 机器狗()//同样$dog2 和上面一个一模一样的。
大家发现没有,类的内容,和以前不太一样了,name,leg是变量,canspeak()是函数!啊,大吃一惊了吧!类就是一些变量和函数的组和啊,再专业点,类就是一些属性(变量)和方法(函数)组成的啊!
class dog
{
 赋值函数(var $a,var $b)
{
$name=$a
$leg=$b
}
$name=?//属性
$leg=?//属性
canspeak(){我叫$name}//方法
}
 看出什么没?呵呵,多了个赋值函数吧,这时我们这样new 机器狗
$dog1=new dog("王求",2)
在这个类中发生了什么勒?
赋值自己启用(自动的),赋值函数( var $a,var $b)//$a等于“王求”$b等与2
那么
$dog1实体的名字就是王求啦
让我们再php化一点
clasa dog
{
  $leg;
  $name;//name和leg都由赋值函数给出
  function __constructor($a,$b)
{
$this->name=$a;
$this->leg=$b;
}
function canspeak()
{
echo "我名字是".$name;
}
}
$dog1 =new dog("王求",2);//此时类中的$this->name意思是$dog1的名字
$dog2 =new dog("刘备",3);//而此时类中$this->name是$dog2的名字
总结:
$this->name,你可以理解为$dog1->name,$dog1是实体,或者这样说:$dog1是一个盒子,里面装着它的属性和方法,$dog2也是一个盒子,里面装着它的属性和方法!
实例化dog1相当于
dog1

名字是王求
两只腿
会说我叫王求

呵呵,回到开始不就是我们开始所研究的对象吗?我们着这张三,李四,王五造出新对象.
大家自己悟吧!老衲暂时圆寂也!

[隐藏样式|查看源码]


『回复列表(8|隐藏机器人聊天)』

1. 额,值得和楼主学习。
(/@Ta/2011-12-02 18:50//)

2. 等待。。。
(/@Ta/2011-12-02 19:05//)

3. 感觉标题的“听”字去掉,效果更好…
(/@Ta/2011-12-02 19:11//)

4. 帮顶
(/@Ta/2011-12-02 19:28//)

5. 实践出真知!
(/@Ta/2011-12-02 21:25//)

6. 实践出真知!
(/@Ta/2011-12-02 21:26//)

7. 可以!!
(/@Ta/2011-12-02 23:06//)

8. 好帖!
(/@Ta/2014-02-23 11:29//)

回复需要登录

7月27日 23:03 星期天

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1