面向对象程序设计第二部分

上传人:zw****58 文档编号:44052722 上传时间:2018-06-08 格式:DOC 页数:5 大小:65.50KB
返回 下载 相关 举报
面向对象程序设计第二部分_第1页
第1页 / 共5页
面向对象程序设计第二部分_第2页
第2页 / 共5页
面向对象程序设计第二部分_第3页
第3页 / 共5页
面向对象程序设计第二部分_第4页
第4页 / 共5页
面向对象程序设计第二部分_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《面向对象程序设计第二部分》由会员分享,可在线阅读,更多相关《面向对象程序设计第二部分(5页珍藏版)》请在金锄头文库上搜索。

1、1注:如果你的类里定义了一个或多个构造方法注:如果你的类里定义了一个或多个构造方法,那么那么 Java 不提供默认的构造方法不提供默认的构造方法. 上述例子 2 提供了构造方法,下列创建对象是非法的: p1=new Point();对象的内存模型对象的内存模型3、对象的内存模型 我们使用前面的例子 1 来说明对象的内存模型. (1) 声明对象时的内存模型声明对象时的内存模型. 当用 XiyoujiRenwu zhubajie 类声明一个变量 zhubajie,即对象 zhubajie 时,如例子 1 中 XiyoujiRenwu zhubajie;内存模型如图所示:声明对象变量 zhubaji

2、e 后,zhubajie 的内存中还没有任何数据,我们称这时 zhubajie 是一个空 对象,空对象不能使用,因为它还没有得到任何”实体”.必须再进行为对象分配内存的步骤, 即为对象分配实体(2) 对象分配内存后的内存模型对象分配内存后的内存模型 当系统见到 zhubajie=new XiyoujiRenwu();时,就会做两件事(a)为 height,weight,head,ear,mouth,hand,foot 各个变量分配内存. 即 XiyoujiRenwu 类的成员变量被分配内存空间.如果成员变量在声明时没有指定初值,那 么,对于整型变量,默认初值是 0,对于浮点型,默认初值是 0.

3、0, 对于 booean 型,默认初值是 false,对于引用型,默认初值是 null.(b)给出一个信息,已确保这些变量是属于对象 zhubajie 的,即这些内存单元将由 zhubajie 操 作(3) 创建多个不同的对象创建多个不同的对象 一个类通过使用 new 运算符可以创建多个不同的对象,这些对象将被分配不同的内存空 间,因此,改变其中一个对象的状态不会影响其它对象的状态. zhubajie=new XiyoujiRenwu(); sunwukong =new XiyoujiRenwu();24.3.2. 使用对象使用对象 对象不仅可以操作自己的变量改变状态,而且还拥有了使用创建它的

4、那个类中的方法的能力, 对象通过使用这些方法可以产生一定的行为.通过使用运算符”.”,对象可以实现对自己的 变量访问和方法的调用. (1)、对象操作自己的变量(对象的属性)、对象操作自己的变量(对象的属性) 对象创建之后,就有了自己的变量,即对象的实体.通过使用运算符”.”,对象可以实现对 自己的变量的访问. (2)、对象调用类中的方法、对象调用类中的方法-对象的功能对象的功能 对象创建之后,可以使用运算符”.”调用创建它的类中的方法,从而产生一定的行为功 能. 当对象调用类中的一个方法时,方法中的局部变量被分配内存空间.方法执行完毕,局部 变量即刻释放内存. class Student fl

5、oat math, english, sum; float f(float k1, float k2) sum = k1 * math + k2 * english; return sum; public class Example public static void main(String args) Student wanghong, lihong; wanghong = new Student(); lihong = new Student(); wanghong.math = 60.0f; wanghong.english = 80f; lihong.math = 70.0f; li

6、hong.english = 90.0f; wanghong.sum = wanghong.f(2.0f, 2.0f); lihong.sum = lihong.f(2.0f, 2.0f); System.out.println(“lihong sum= “ + lihong.sum); System.out.println(“wanghong sum=“ + wanghong.sum); 4.3.3. 对象的引用和实体对象的引用和实体3我们已经知道,当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间 称做该对象的实体,而对象中存放着引用,以确保实体由该对象操作使用. publi

7、c class Point int x,y; Point(int a,int b) x=a; y=b; public static void main(String args)Point p1=new Point(12,16); Point p2=new Point(6,18); p1=p2; System.out.println(p1.x); System.out.println(p2.x); 4.4 static 关键字4.4.1. 实例变量和类变量的区别实例变量和类变量的区别 在讲述类的时候我们讲过:类体的定义包括成员变量的定义和方法的定义,并且成员变量 又分为实例变量和类变量,用 st

8、atic 修饰的变量是类变量.那么类变量和实例变量有什么区别 呢? 我们已经知道:一个类通过使用 new 运算符可以创建多个不同的对象,这些对象将被分配不 同的内存空间,现在再说得准确些就是:不同的对象的实例变量将被分配不同的内存空间,如 果类中的成员变量有类变量,那么所有的对象的这个类变量都分配给相同的一处内存,改变其 中一个对象的这个类变量会影响其它对象的这个类变量. 也就是说对象共享类变量也就是说对象共享类变量. 如 class Takecare static int x; int y; . class A 4Takecare A1=new Takecare(); Takecare A2

9、=new Takecare(); A1.x=18 这时如果输出 A1.x,A2.x 的值,结果相同都是 18见例子 StaticTest.java当 Java 程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类的实例成员变 量不会被分配内存.但是,类中的类变量,在该类被加载到内存时,就分配了相应的内存空间.如 果该类创建对象,那么不同对象的实例变量互不相同,即分配不同的内存空间,而类变量不再 重新分配内存,所有的对象共享类变量,即所有的对象的类变量是相同的一处内存空间,类变 量的内存空间直到程序退出运行,才释放所占有的内存.4.4.2. 通过类名直接访问类变量通过类名直接访问类变

10、量 类变量在类的字节码加载到内存时就分配了内存空间,并且被所有的对象共享,因此,Java 语言允许通过类名直接访问类变量. class Statictest2 static int a=1; class Point public static void main(String args) int c = Statictest2.a; System.out.println(c); 4.4.3. 实例方法和类方法的区别实例方法和类方法的区别 当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,当该类创建对象 后,类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行.

11、需要 注意的是,当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不 再分配入口地址,也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方 法的入口地址才被取消. 对于类中的类方法,在该类被加载到内存时,类方法就分配了相应的入口地址.从而类方 法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用.类方法的入口地址直到 程序退出才被取消. 无论是类方法或实例方法,当被调用执行时,方法中的局部变量才被分配内存空间,方法 调用完毕,局部变量即刻释放所占的内存.54.4.4. 通过类名直接调用类方法通过类名直接调用类方法 类方法在类的字节码加载到内存时就分

12、配了入口地址,因此,Java 语言允许通过类名直 接调用类方法,而实例方法不能通过类名调用.在讲述类的时候我们强调过,在 Java 语言中,类 中的类方法不可以操作实例变量,也不可以调用实例方法,这是因为,在类创建对象之前,实例 成员变量还没有分配内存,实例方法也没有入口地址 class A int x,y; /实例变量 static int z; /类变量 static float f (int a) /类方法 float g (int x1,int x2) /实例方法 class B public static void main(String args) /带有 static,属于类方法 A.f();/合法 A.g();/非法 A a = new A(); a.f();/合法 a.g();/合法

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号