教你真正理解面向对象和多态

本文转自: http://www.skiyo.cn/article/Skiyo-73-1228055943.html

以下的内容都是我自己总结的.我已经非常尽力把这些事说的非常简单易懂了.其中的东西都不是非常真实的.大部分都是笑谈.帮助大家更好的理解.不要钻牛角尖去研究我说的真实性.

当然这些都是我自己理解的.如果你觉得跟你想象的有些出入,我非常喜欢热烈的讨论.年轻人需要这种气氛.

好了废话不说了.下面开始介绍.

首先你得自己知道为什么会有面向对象的编程

我简单解释下:(这不是真正产生面向对象概念的原因.但是非常易懂)

很久很久以前.软件开始越做越大.代码也越写越多.每个人与每个公司的代码库都越来越大.

举个例子:

有个A公司.他们公司都喜欢把自己写的函数放在一个名字为function.php里的文件里.随着日月的积累.

这个文件变得越来越大.我们设想他们比较笨.不会再建立个新文件:)..

而且里面什么样的函数都有.有数组的.有字符串的.杂乱无章.不好管理.

这时候他们就停下来思考.如何解决这个棘手的问题.

于是爱因斯坦开始去探索宇宙大统一的理论.假定他发现了.大统一.顾名思义.什么东西的本质其实都是一样的.

然后这些人根据爱因斯坦的大统一理论发现了.其实软件设计跟我们的平时生活也是一样的.

我们所说的”鸟”只是个虚构的概念.这个世界上并不存在”鸟”这个实体.

但是真正有的是”麻雀”.”鸵鸟”.”人鸟”(人鸟??鸟人!!!).

于是有了类这个概念.这些鸟都是属于一类的.

再次回来看那个function.php这个文件里面的函数.有些是数组的有些是字符串的.

他们就想到.把这些数组的函数放在一起.字符串的函数放在一起.

久而久之就出现了我们Java中常见的数组类和字符串类.

这样设计之后.人们开始发现这样做的好处.这些函数好被管理和查找.并且你想要一个功能基本可以猜出它是位于哪个类中.

比如你看到了一个会飞的东西.你可以首先确定这个东西也许是鸟类里面的.你再仔细一看.竟然是一个人.

噢.你恍然大悟.原来是鸟人啊.

还有什么降低耦合啦什么的.这个不好玩.我就不说了.你可以去翻书.

然而.其实要做到100%的面向对象是非常困难的.

比如我们说去吃饭.80%以上都是去吃大米饭.(我们这里是这样的)

C++发现了问题.所以它不是纯粹面向对象的编程语言.

后来日公司(???)经过发掘和统一标准.推出了一个完全面向对象的Java.

在web非常流行的今天.Java不涉及这个领域肯定是流行不起来的.所以JEE也加入到web阵营中.

日公司发现要在网页上做到完全的面向对象也是非常困难的.所以出现了JSP.

但是JSP连一点Java的优势都没体现出来.甚至还没有PHP方便灵活.

所以一些完全面向对象的框架产生了struts2的诞生让我们都知道:原来不用JSP光用Java也可以做网站的.

扯远了.回来继续说面向对象的概念.

我们知道面向对象有个非常重要的概念就是多态.其实这个在现实生活中更加常见.

人就是个多态.男人有小JJ,女人木有小JJ.

阿拉甲.阿拉已.阿拉丙和阿拉丁是人这个类类产生的四对象.

他们的父亲说:世界上女的都是母老虎.你们可不要去接近啊..

但是他们四个做出了不同的反应.

阿拉甲听了父亲的话,去做了和尚

阿拉已听了父亲的话.去做了道士

阿拉丙也听了父亲的话.但是他不信.去找母老虎.看看他是不是女人.结果他挂了

阿拉丁很不听话.找了个女人度过了一生.

可能你会问.这些都太笼统了.你写个简单的例子来.我说行.我用Java写个例子.你如果真正理解了他.你就真正理解了多态了

int i=5;
int j=6;

i和j都是int类型.但是是不同的数值.所以他们就可以称作为多态了.好好想想.我相信你会明白的:).

概念先介绍到这里.可能你会说.你说的这些我都知道.但是我就是不会面向对象的编程.我可以理解.但是我写不出来.

可以明确的说你写不出来是因为你写的少.我这里留个作业.你练练手希望能帮助到你.

作业:运用面向对象的思想.自己设计几个类.分别是计算三角形.长方形.正方形和圆形的面积.

注:以上都是扯淡.如有雷同纯属巧合.

发表评论

返回顶部