谈谈java的类与对象


1.一切都是对象,用new产生的是对象,用系统已定义好的类来声明的变量也是对象,对象是程序最小的单元。
2.一切都在类中。不属于类的对象是不存在的,先有类后有对象,有对象必定有类,生类或寄生类。类是程序的基本单位。
3.对象是自由身,它可自由的出现在其它类中,为其它的类服务。
4.虽然是先有类后有对象但思考时要以对象为单位去分析,找到对象后再归纳类。不能把类当做对象来考虑, 如果每一个对象都当成一个类,那这个类就没多大意义了,如果没必要可以不建立一个类,可将该对象寄生在别的类中。由对象归纳而来的类才是抽象的,适合的。
5.类的作用不只是标识对象,容纳对象.它是对象的生产者,更是对象能力的赐予者,对象的所有力量都来源于它所属的类。
6.对象是有血统的,它的基因构造决定于它所属的类,它可以被任何类拥有,在任何类中生活,但任何类都不能改变它的性质,除了它的生类。
7.对象可以是多身份的,子类对象可当作父类对象来使用。但如果没有继承关系,它只有一个身份。
总之面向对象是人性化的思维方式。

写得不错。主要谈论了对象和类的区别,其实,有时我们谈OO时,这个对象就是统指对象和类。

微观对象和类的区别,就是实例和类的区别,那么就要搞清楚单例和多例关系,搞清楚对象的生命周期,这些对实战非常重要

谢谢banq大哥指点。我觉得java的大多技术,都离不开类与对象,都是建立在类与对象之上的,有直接的,有间接的。有此认识就很容易读懂别人的代码(相对面向过程编程来说),很容易就理解各式各样的java的具体的技术,难的可能是记忆那些长而杂的名词(对于英语不好的人来说)。
[该贴被ptw850409于2008-10-27 13:54修改过]

是的,搞清楚类和对象很重要是入门,但是只是搞清楚还不够,因为对象涉及生命周期,对象是活的,类是死的定义的。

面向过程思维的人总是习惯对象和类混合,都是函数,编程时是死的,运行时就自然活了,所以就觉得轻松,而到OO语言平台中,必须有这种类和对象分离。编码和运行阶段两者不一致带来很多人思维的不习惯。

其实OO编程就象我们做飞机和船模型一样,设计时是死的,但是必须为它运动后的一切负责设计。

而面向过程则像解题,只要完成数学题答案就可以,因为数学题不是活的是纯理论的。

所以企业软件应用更应该是偏向工程类,只有研究软件语言本身才需要纯理论。当然,研究软件语言本身类似图灵奖获得者,如果没有OO这种动态对象思维能力,他哪里有资格去研究软件理论呢?除非他研究的不是软件,就是纯数学。

所以,OO是基础,是软件基础,不只是企业软件基础。
[该贴被banq于2008-10-27 14:44修改过]

OO编程让人可以抛开数据,抛开机器,抛开系统,以对象为单位来抽象一个问题。因为在JAVA中可以自定义运行的数据,这种自由性是无限的,万事万物都可以成为数据,其实数据也是一个类的对象。JAVA的开发者把支持程序运行的最小载体设计为封装好了的对象。编译机器处理的是对象,只要是对象都行。在人们的传统观念中,似乎能在程序中运行的都是数字,没想到实物都能用来编程。

>在人们的传统观念中,似乎能在程序中运行的都是数字,没想到实物都能用来编程。

正确,所谓传统观念还是被过分强调数学的思维导致,将数学上升为方法论,数学不是哲学,不能替代哲学来描述世界,直接用物体物质(也就是Object)概念来描述世界才是还哲学本义。

很好,其实发现很多人把类和对象混起来了,设计开发时都没去注意,类应该是某些有共同属性的对象的抽象;另外我觉得实例未必是一个完整的对象!
而数据,我觉得应该是这个对象在不同状态时的表现,只是构成对象的暂时属性值。

类是从对象归纳出来的,先有了这么些花草,然后时间长了发现有一部分是相似的,于是起个名叫菊花等等,就成了一类。

哎.还有很多方法可以区别,
我记得我以前教学生的时候说得最多的一句话就是,类是写在文件中的,对象是运行在内存中的,main方法是组识者,他负责告诉对象怎么运动,jvm就是按照main方法的指示按照类的模型制造对象并让他们能说话!

GC就是把用完了的类丢到垃圾桶里去. 呵呵!

>>GC就是把用完了的类丢到垃圾桶里去

应该是用完了的对象吧?

>>类是死的定义,对象才是活的
女娲拈土作人,化泥为人,拈类作对象,同样如神话般神奇。当世界澄清,泥已化黄士,但人已成,有生命,有本能,有意识。女娲之意是为造人,程序之意是为造对象。程序完成,看到的只有对象。