English Sentence Loading...
英语句子加载中...

Java中关于对象的建立问题

——对象是java 中的一个非常重要的概念,如果不理解对象,java 就无从学起!
     1、一个对象就是变量和相关的方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为 。对象是一种对客观事物的抽象,它由状态(属性)和行为(方法)组成。

对它的整体评价就是:
——一个对象的变量构成这个对象的核心,包围在它外面的方法使这个对象和其它对象分离开来。实际上 ,面向对象的程序设计实现了对对象的封装 ,使我们不必关心对象的行为是如何实现的这样一些细节 通 过对对象的封装 ,实现了模块化和信息隐藏 ,有利于程序的可移植性和安全性 ,同时也利于对复杂对象的管理

书本上最原始的定义
--------把类实例化 ,我们可以生成多个对象 ,这些对象通过消息传递来进行交互(消息传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为 ),最终完成复杂的任务 。
一个对象的生命期包括三个阶段 :生成 、使用和清除 。 下面我们分别讲述:
1)、对象的生成 :
对象的生成包括声明 、实例化和初始化三方面的内容 .通常的格式为 :
type objectName = new type ( [paramlist] );
——其中type是组合类型 (包括类和接口 )。 对象的声明并不为对象分配内存空间 。而只是分配一个引用空间,就是reference(reference引用空间是指在编译器中发生的,不是实在的空间)。对象的引用类似于指针,是32位的地址空间,它的值指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。

2)、实例化:运算符new为对象分配内存空间 ,实例化一个对象 。
new调用对象的构造方法 ,返回对该对象的一个引用 (即该对象所在的内存地址 )。 用new可以为一个类实例化多个不同的对象 。 这些对象分别占用不同的内存 空间 ,因此改变其中一个对象的状态不会影响其它对象的状态。

3)、生成:生成对象的最后一步是执行构造方法, 进行初始化 。
由于对构造方法可以进行重写 ,所以通过给出不同个数或类型的参数会分别调用不同的构造方法 。

以类Point为例 ,我们生成类Point的对象 :
Point p1 = new Point();
Point p2 = new Point(5,10);
这里 ,我们为类 Point生成了两个对象 p1、 p2,它 们分别调用不同的构造方法 ,p1调用缺省的构造方法 (即没有参数 ),p2则调用带参数的构造方法 。p1、p2 分别对应于不同的内存空间 , 它们的值是不同的 ,可以完全独立地分别对它们进行操作 。

2、对象的使用
包括------引用对象的成员变量和方法,通过运算符 “.”可以实现对变量的访问和方法的调用 ,变量和方法可以通过设定一定的访问权限来允许或禁止其它对象对它的访问
1)、对象的使用(方法的调用)
譬如:mf.init();
       System.out.println (累加数字.总和());
这两行中分别使用了不同的对象所提供的方法,,调用语句的基本格式如下:
       <对象/类名称>.<方法名称>([参数])   /<属性名称>[( <参数>s) ] )]

2)、调用对象的变量
  格式:objectReference.variable
  objectReference是一个已生成的对象,也可以是能生成对象的表达式
  例: p.x= 10;
     tx=new Point( ).x;
我们用Point p=new Point();生成了类 Point的对象p后 ,可以用 p.x,p.y来访问该点的 x、 y坐 标 ,如
     p.x = 10; p.y = 20; 或者用new生成对象的引用 ,然后直接访问 ,如 :tx = new point().x;
(Point p;
p=new Point();
这里p.x=new Point().x),程序解释得很详细

3、对象的清除
当不存在对一个对象的引用时,该对象成为一个无用对象。Java的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。
System.gc( );  ----->动态

注意——
1)、用句柄操纵对象
在Java里任何东西都可看作对象。因此,我们可采用一种统一的语法,尽管将一切都"看作"对象,但操纵的标识符实际是指向一个对象的"句柄"(Handle)。
2)、所有对象都必须创建
      创建句柄时,我们希望它同一个新对象连接。通常用new关键字达到这一目的。new的意思是:"把我变成这些对象的一种新类型"。
3)、保存到什么地方(可以省略)
程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据(寄存器、堆栈、堆、 静态存储、常数存储、非RAM存储)
具体流程:
对象的内存分配问题——
以MyObject类为例,
MyObject obj;
      以上是声明,声明完后,编译器会在内存中空出一个空间来放这个类对象。
        对象的声明只是在内存中产生一个对象的引用(reference),它所存放的并不是一个真正的对象实例,因为对象的实例我们还没有生成。所以当一个对象被声明以后,在内参中这个对象引用初始值回是null
   声明之后,我们用new 这个关键字,配合调用类的构造函数,来生成对象实例,譬如:
MyObject obj(10);
这时的编译器才真正产生对象的实例。
       但是这时还没有把对象引用和对象实例关联在一起,二者还是分开的,刚刚的对象引用还是null,而新生对象实例也没有被引用到,所以二者还是不能使用。
      要使二者产生关联,我们必须使用赋值语句,将对象实例指定给对象引用,这样句可以通过对象引用来使用这个对象了。
MyObject obj obj = new MyObject(10)
至此,关于对象建立应该可以理解得比较清楚了!!

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: Java 语言 编程 对象
相关日志:
评论: 0 | 引用: 0 | 查看次数: 3683