面向对象与上帝造人——类与对象(java篇)

来源:互联网 发布:博客户搜索软件 编辑:程序博客网 时间:2024/04/30 01:58

转载我老板的文章

  

面向对象与上帝造人——类与对象(java篇)
 
 
学习和使用java断断续续很多年了,头脑中关于“面向对象编程”的概念总是偏向于使用java来诠释。我是个半路出家的程序员,所有的知识都是来源于自学,大部分的东西都是自己体会来的。Perl也有面向对象这一概念的,但是其结构令我总觉得不如java来的漂亮严谨。也曾自学过一阵C++,但是却觉得其中面向对象的应用方法不如java的流畅清爽。看来java的娇悄面容已经将我深深吸引了。
既然这是一篇记述有关本人对java面向对象的心得文章,应该只适合于初学者,高手就请不要嘲笑了。
  1.类与对象(从人类和冷酷菜单说起(冷酷菜单——笔者一个朋友的网名)
我喜欢类和对象这两个概念,因为这两个概念几乎可以对应世间的任何事物,在这里请允许我用上帝造人这个比方来说明什么是类和对象。
先说类。“人”就是一个类。如果我们想做一回上帝,造一回人(不是一个男的找到一个女的,然后就……),那么首先得知道人是什么东西。人是什么东西呢,好办,我们可以找一个例子看一看,比如冷酷菜单就是一个活生生的例子:
 
外观上是一个脑袋,两只手,两条胳膊。
能做什么呢?能说话,能干活,生气了还会打人。
 
  那么好了,“人”这个类和对象就都出来了。类——就是一个数据集合。而“人”这个类就包含了人是包括一个脑袋,两只手,两条胳膊这些特征和说话,干活,打人这些动作的数据集合。类是一个定义,不是活的,就如同我们不能忍受每天同一个“人类”打交道一样,我们必须对人类的一个对像打交道,冷酷菜单就是一个对象了,我在这个blog里头打交道的人类的一个实例化。
 
因此在java中,对象(object)就是一个类(class)的实例(instance)化。
 
补充一点,类是有子类的概念的,比如冷酷菜单男性特征明显,应该是属于男人类吧?有关子类的概念我在后边还有提到,到时候就知道冷酷菜单是不是男人了。(>_<)
 
2.类的属性和方法(看冷酷菜单是如何发狂打人的)
  当年我在读哪些干巴巴的教科书时,我百思难解的是类的属性和方法这两个概念,我不能肯定属性是不是变量声明,尤其不明白方法同Basic或者C中的子程序有什么区别(特别是我在学习JavaScript的时候困惑更甚,我几乎不能分辨子程序和类)。当然现在我明白了,看一看冷酷菜单就知道了。
  冷酷菜单是人这个类的一个实例,他有脾气,外观等一些属性,他拥有吃饭、说话、打人这些方法。
 
  那么现在我们可以这样理解,属性其实就是在类中声明的一些变量,这些变量能描述类所代表的事物的外观特征等。方法就是类中定义的一堆子程序,当这些程序执行的时候可就有事情发生了,比如冷酷菜单在厕所一蹲那就是大便呢。
 
  好,现在我们可以看看上帝关于人这个类的设计图纸是什么样的了:
 
人类{
 外观之右手;//属性
 外观之左手;//属性
 ……;//属性
 身高;//属性
 体重;//属性
 ……;//属性
 吃饭{……};//方法
 说话{……};//方法
 打人{ //方法
    抬起外观之右手挥出;
 }
}
  既然有了图纸我们就可以调查出来冷酷菜单是怎么制造出来,并且如何控制他打人了:
冷酷菜单 = new 人类;//这句的意思是按照图纸生产一个“新”的人类实例。
冷酷菜单.外观之右手 = 瘦骨嶙峋;
冷酷菜单.打人;
  Ok,就这样冷酷菜单就挥舞着瘦骨嶙峋的右手开始打人了。简单吧?让我们让他将打人这个动作重复一千次吧!
for(int i = 0; i < 1000; i++ ){
 冷酷菜单.打人;
}
累死丫的!