能否通俗讲一讲php中的“面向对象”和“类” 是什么东西?

2013-06-19 07:57:27 +08:00
 cssnote
2722 次点击
所在节点    问与答
5 条回复
raincious
2013-06-19 08:08:51 +08:00
我的理解:

类 是 对象 的容器。是用来实现对象的代码本体。

对象是代码产生的操作体。

拿文件读取来举例子:

以前读取文件需要几个操作,分别是fopen,fget,fclose。

这时候要使用这些很多人就觉得不方便,比如这些函数太多了不好记忆等等。

于是乎,别有用心的一撮人就发明了“对象”这种东西,PHP也就引入了。

这样的好处是,代码模块化程度突然就变高了。重构要方便很多,而且分工更容易。(当然要先组织好结构)。

于是你可以这样来读取文件了:

$fileReader = new file('filename.ext');

$fileReader->getContent();
$fileReader->getLine(1);
$fileReader->getChar(1024);
$fileReader->getExt();
$fileReader->getSize();
$fileReader->getTime();
....
oklqh
2013-06-19 16:02:53 +08:00
面向对象是一种程序设计方法
类是实现这种方法的一种方式,对类进行实例化,就是一个对象了。

当然了,面向对象的方法不止类这种,javascript还有prototype的方式。
zhc
2013-06-19 17:26:20 +08:00
类就是对象,都是老外那直译过来的我感觉误导了不少的初学者.我感觉叫它 "代码块"更合适.

对象(类)可以理解为具有(封装了)一定功能的一个模块.
你其他地方可以利用这个类的这些功能(调用它的接口).

比如说你每天做饭,每天下班后买一堆原料回家在厨房里操作.
但是你很讨厌每天切啊炒啊煮这些每天重复的操作.
于是你发明了一个做饭机器,把机器里面的烹饪操作及逻辑都设定的稳定完美(封装逻辑).
以后每天你回家只要买一些原料丢进机器饭菜自然做好(调用对象接口).
从此以后每天你都可以非常轻松的方便的吃到美味的饭菜.非常爽.
其实你机器里面的煤气灶也是一个对象他封装了输气点火等一系列逻辑来简化操作.

这个机器就可以理解成一个有专门功能被封装好的对象.
由于内部逻辑你已经通过之前经验封装好. 避免了每天重复的操作使你效率大大提升.

面相对象的思想可以使你轻松高效进行软件开发.而且逻辑清晰,整个项目在你心里都是一块一块的相互调用.

以上纯属个人愚见.
akinoniku
2013-06-19 18:30:17 +08:00
面向对象三大特性:

封装:把一样东西抽象成类,比如人类,有手有脚(属性),能吃能睡(方法)

继承:学生和老师都是人类的一种,而且他们除了能吃能睡还能上课!

多态:虽然学生和老师都能上课,但他们做的不是同一件事(分别是讲课和听课)
cssnote
2013-06-20 00:11:36 +08:00
@raincious
@oklqh
@zhc
@akinoniku

Thanks a lot,今天自己练习了一下,再看看你们的回复,感觉明白不少了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/72845

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX