菜鸟喝咖啡(前提)--浅谈java中的类和对象

来源:互联网 发布:软件工程网络选课课程 编辑:程序博客网 时间:2024/04/19 01:35
       终于开始了。做为初学者来说,太多的新知识会让你把握不住学习的方向,部分人他在决定认真学习这门课程的时候,会非常仔细且小心的去肯读每个知识点。如果知识点过多,那么就会有急噪不安的情绪出现,想学却又不知从哪儿入手,所以我们只用简单的一段学习下。首先了解下Java平台:

          Java SE:Java平台标准版 (Java Platform, Standard Edition)--主要开发桌面C/S 客户端/服务器系统 如:QQ,Word等。
          Java EE:Java平台企业版 (Java Platform, Enterprise Edition)--主要开发网络B/S 浏览器/服务器系统 如:电子商务,网络平台,管理系统等。
          Java ME:Java平台微型版 (Java Platform, Micro Edition) -- 主要开发嵌入式移动系统,如手机游戏,手机网站等。

      按照一般的学习流程,必须先掌握JavaSE的所有基础知识和常用的API(Application Programming  Interface 应用程序编程接口,也就是SUN公司的程序员预先编写好的功能丰富的程序代码库,也称做类库)后,才会向JavaEE和javaME两个分支发展。具体看自己的兴趣。如果想做B/S结构的网络平台开发,那么选择前者;如果想做手机游戏、WAP网站等开发的话,那么请选择JavaME;如果你钟爱C/S模式的开发的话,那么学完javaSE部分你已经具备了基本的开发能力了。

      下面我也学各位大师们先从HolleWord 开始,看看java代码的基本摸样吧。

  1. public class 哈罗我的{
  2.      
  3.     public static void main(String[] args){
  4.         System.out.println("欢迎您,我是你学的第一个Java程序");
  5.     }


      看,上面就是一个java程序中最基本的单元“类”。平时我们写信或者日志都有规定的格式,那么java语言也有同样的规定。你想着手写代码,就得严格按着这种格式来写。具体的咱们后面的章节会有详解。说到了“类”,那么不的不说“对象”,因为java本身就是一种面向对象的语言。(具体的可以去参照《java面向对象编程》第一章,有详细的说明)
      面向对象的思想又是一门新的学科,而java语言也就是在这基础上发展而来的。那么什么是面向对象程序设计?面向对象程序也就是把计算机中的程序看成是现实生活中的真实存在的实体(物体),她不仅包函了该实体的属性,还包含了对这些属性的操作。明白了吗?当然,如果你的第一次听见面向对象那么你肯定得蒙。我们的谢谢各位大师们不断的给我们这些菜鸟创造新的词汇,而且让人费解。好了,休息了下,那么生活还得继续呀!不懂的看下面例子:

  1. public class 人{
  2.    /**
  3.     * 以下是属性
  4.     */ 
  5.    String 眼睛;
  6.    String 鼻子;
  7.    String 嘴巴;
  8.    
  9.    /**
  10.     * 以下是属性相关的动作
  11.     */ 
  12.    public void 眨眼睛(){
  13.       //眨眼睛动作的过程
  14.    }
  15.    public void 闻气味(){
  16.       //闻气味动作的过程
  17.    }
  18.    public void 说话(){
  19.       //说话动作的过程
  20.    }
  21.    public static void main(String[] args){
  22.         System.out.println("欢迎您,我是你学的第一个Java程序");
  23.    }
  24. }

      OK,咱们来看图说话。刚才说到了,java程序的最小基本单元就是类。首先,上面是一个类,哪里可以看出?这要归功于class关键字。class 人{},这是在告诉java虚拟机,我写的是一个java类。然后看{}(代表类的范围,这里可以代表人体)里面,有人的一些外貌特征,眼睛、鼻子、嘴巴。而相应的外貌特征都是活的器官,他们多有自己的动作。眼睛会眨,鼻子可以闻气味儿,嘴巴可以说话。这些都是真实生活中真实存在的,在生活中我们把嘴巴等统称为外貌特征,而在java中我门把它称做属性。属性产生的动作称做方法。今天开始,你就可以这么去叫了。
提示:一定要培养起面向对象的思维方式,class类就是其中一样。当你看到某个物体时,你就可以用java中类的概念去描述它,属性有什么,方法有哪些?这样一段时间后,自然而然就会用类的概念去思考问题了。
最后我们得到了类的定义:类就是对现实世界中具有相同属性(外貌特征)和方法(动作)的事物高度集中的描述。
类是描述,只属于概念上的,一定要记住。

      现在你明白了为什么说Java是面向对象的语言了吗。类也仅仅是面向对象中的一个特征而已,但是这已经足够让你明白了Java的与众不同了吧。因为他符合我们人类的思维方式,而不在象C语言那样,用计算机的思维方式来写程序。

对象
      上面对类的基本情况进行了概述,既然说到了类,肯定要介绍对象了。你乍的一听,还以为是两人相亲,媒婆给介绍对象呢。其实也没错,生活中对象确实有这含义,但是你别搞错,媒婆给介绍的对象是指什么?当然是指男方或者女方。他们是人,真实存在的。所以媒婆介绍的对象也属于面向对象思想中对象概念的一部分。好,现在我们就给出对象的定义:对象(Object),就是现实世界中真实存在的实体(事物,物体)。大到宏观宇宙,小到微观电子,只要是真实存在的事物,生活中多统称为对象。可以看到对象与类有着本质上的区别,类只是用抽象的思维,研究总结后描述的概念,是属于主观意识上的。而对象是客观存在的。


类和对象的关系
      类和对象的关系非常紧密。前面我们说到类是对现实时间中真实存在的事物的高度集中的描述。而对象则是事物的真实存在。我们可以讨论一下,请先读一个故事。
      早在远古时期,当人类的祖先还是猿猴的时候根本就没有现在的语言,它们所掌握的语言就也就通过叫声、肢体动作、表情来相互的交流。但是随着时间的流逝,当第一只猿猴慢慢的直立行走时,才开始有了人的意识,那时候可能还只能简单的使用工具,但是他已经具备了人的特征了,因为他会使用工具了。会用工具当然就能去捕获更多的猎物,于是他们开会,叽里呱啦的商量怎么打下那只猎物,这时候一只老猴子在地上画了个简单的图案,随后大嚎一声。于是在以后的捕猎中就用这个图代表了这只猎物,而那声嚎叫也同样代表这只猎物。这样开始人类的大脑慢慢地得到了发展,开始学会用各种图案和声音来代表不同的事物。那么我们的祖先也得有个图案或者声音来代表啊。于是大家又开会了,前面提到的这只老猴子(估计上万岁了,呵呵)又在地上画了一个简单的图案,然后又大声长嚎。于是“人”诞生了。这声嚎叫就是对他们所有人的总称了。这样,这个“人”就是对他们所有猴的描述和指代了。我们的祖先们把自己和其他的事物分离开来,并且渐渐地对其他的事物开始逐渐类分。又过了很多很多年......由于气候的变迁和人类的迁徙,不同地域的人出现的不同类型的进化。开始出现了黑糊糊,白茫茫,黄聪聪的,棕滋滋的人种。又有那么一天,几个不同种族的头儿一不小心碰到了一块,这白色的人就说:“嘿!怎么还有黑色的人。”这黑色的人说:“失败啊!怎么还有白色的人。”这黄色的人说:“恩,这白色的人很白。”这棕色的人也说了:“这Y的白色人太白了。”于是他们又开会了,最后定下了在人的前面加上色系来区分不同的人种。于是就有了黑人,白人之称了,故事到这也就完了。
      我们看到了,黑人白人这些都是属于人的分支,他们都是在人的基础上分裂来的。由此可以看到了“人“类是一个高度概括性的词。而用白人这么一个词便能描述数已亿计的真实存在的人。更不用说"人"这个词的高度概括性。那么从以上的叙述我们最终可以得到这个一个结论:"类是对象的模板"。那么在计算机系统中,与现实生活中又存在着根本性的差别。那就是现实中是先有“人”的存在,才会有人对自己的高度的概括描述,也就是“人类”。而计算机系统中,则恰好相反。我们都是根据现实中具体对象的存在,然后通过用java类来描述对象的特征和行为。对对象的描述即类,你可以成看是一个设计图纸,然后交给生产车间也就是计算机,计算机则会根据设计图纸(类)制造出来一个一个的真正存在的物体也就是对象,对象就存在内存中,所以我们说类是对象的模板。既然类是对象的模板或者设计图纸,那么计算机或者生产车间不就能生产出多了对象,可以流水线生产。所以你生产出来的物体,在现实世界中占有不同的空间和地方,两个不同的真实事物是不能完全重垫在一起的。所以新的结论又出来了:“根据类可以产生一个个的对象,并且每一个对象都具有独立的存储空间,相互之间是毫无关系的。”类是对真实对象的描述,自然产生的对象必定具备了类所描述的特征和行为方法。这样:“根据类生产的对象,类中所描述的属性和方法,也就是对象的属性和方法。”另外对象是存在与内存中的,他总是在不停的运动着的,接下来更精彩哦!



对象生存在哪里?
      谁都知道,我们人类以及世界上的所有的一切对象(事物,物体)多置身于无边无际黑色的宇宙中。我们只是宇宙中的一个点而已。而java中对象是存在哪里呢。有一点计算机常识的人就会知道内存。没错,java中的对象就生存在计算机内存当中。那么现实中我们可以知道也可以看到和想象到宇宙是什么个模样,以及对象生存在宇宙中的具体形态和行为方式。但对象在计算机内存中会是一个什么样子。圆的、方的、人型的一切多只是猜想,我想没有人能说出来内存中的对象以什么形态存在(不不不说01码,更不要说电信号)。这需要我们的想象。那么该怎么想呢。下面就请大家跟随我的思维来一起想象吧!
      首先请放慢您对该文章的浏览速度。然后请闭上双眼,你会看到周围的一切事物都是黑糊糊的一片,你感觉自己就置身其中,你能够观察周围的一切。正在此时突然间黑色的空间中悬浮着一快长方型的物体,不对,是一个长方体。它有高,有宽,也有长度。你可以看见这个长方体是透明的物体,完全可以看见里面的状态。并且这个长方体在不停的缓慢地顺时针旋转。现在,请慢慢的根据我们所想象的这幅画面来讨论他们之间的关系,我们把这个长方体想象成一个对象,那么周围黑色的空间就是内存了。对象在内存中占用的这一块空间,我们可以称做内存空间中的一个内存单元。而长方体内部的空间里面则封装了长方体对象的内部数据(外观特征和行为方式,也就是对象的属性和方法)。这只是单个对象在内存中的分布状况,如果有一群对象,他们之间的分布关系,那么这个就牵涉到java的数据结构了,我会在后面的章节详细解说。那么内存与对象的关系通过这么一描述你是否有了一定的印象了呢。记住,以后只要看到内存这个词时,你的脑子里面就得是一片漆黑的。因为这就是内存,漆黑一片,一望无际。而对象则是存在内存中的一个单元块中。并且在不停的运转着。