2023年面向对象程序设计第二部分.doc

上传人:知****量 文档编号:83070210 上传时间:2023-03-28 格式:DOC 页数:7 大小:48.54KB
返回 下载 相关 举报
2023年面向对象程序设计第二部分.doc_第1页
第1页 / 共7页
2023年面向对象程序设计第二部分.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2023年面向对象程序设计第二部分.doc》由会员分享,可在线阅读,更多相关《2023年面向对象程序设计第二部分.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 注:假如你的类里定义了一个或多个构造方法,那么Java 不提供默认的构造方法.上述例子2 提供了构造方法,下列创建对象是非法的:p1=new Point();对象的内存模型3、对象的内存模型我们使用前面的例子1来说明对象的内存模型.(1) 声明对象时的内存模型.当用XiyoujiRenwu zhubajie类声明一个变量zhubajie,即对象zhubajie时,如例子1中XiyoujiRenwu zhubajie;内存模型如图所示: 声明对象变量zhubajie 后,zhubajie的内存中还没有任何数据,我们称这时zhubajie 是一个空对象,空对象不能使用,由于它还没有得到任何”实体

2、”.必须再进行为对象分派内存的环节,即为对象分派实体 (2) 对象分派内存后的内存模型当系统见到zhubajie=new XiyoujiRenwu();时,就会做两件事 (a)为height,weight,head,ear,mouth,hand,foot 各个变量分派内存. 即XiyoujiRenwu 类的成员变量被分派内存空间.假如成员变量在声明时没有指定初值,那么,对于整型变量,默认初值是0,对于浮点型,默认初值是0.0, 对于booean 型,默认初值是false,对于引用型,默认初值是null. (b)给出一个信息,已保证这些变量是属于对象zhubajie的,即这些内存单元将由zhub

3、ajie操作(3) 创建多个不同的对象一个类通过使用new运算符可以创建多个不同的对象,这些对象将被分派不同的内存空间,因此,改变其中一个对象的状态不会影响其它对象的状态.zhubajie=new XiyoujiRenwu();sunwukong =new XiyoujiRenwu();4.3.2. 使用对象对象不仅可以操作自己的变量改变状态,并且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为.通过使用运算符”.”,对象可以实现对自己的变量访问和方法的调用.(1)、对象操作自己的变量(对象的属性)对象创建之后,就有了自己的变量,即对象的实体.通过使用运算符”.

4、”,对象可以实现对自己的变量的访问.(2)、对象调用类中的方法-对象的功能对象创建之后,可以使用运算符”.”调用创建它的类中的方法,从而产生一定的行为功能.当对象调用类中的一个方法时,方法中的局部变量被分派内存空间.方法执行完毕,局部变量即刻释放内存.class Student float math, english, sum;float f(float k1, float k2) sum = k1 * math + k2 * english;return sum;public class Examplepublic static void main(String args) Student

5、wanghong, lihong;wanghong = new Student();lihong = new Student();wanghong.math = 60.0f;wanghong.english = 80f;lihong.math = 70.0f;lihong.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 su

6、m= + wanghong.sum);4.3.3. 对象的引用和实体我们已经知道,当用类创建一个对象时,类中的成员变量被分派内存空间,这些内存空间称做该对象的实体,而对象中存放着引用,以保证实体由该对象操作使用.public 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

7、);4.4 static 关键字4.4.1. 实例变量和类变量的区别在讲述类的时候我们讲过:类体的定义涉及成员变量的定义和方法的定义,并且成员变量又分为实例变量和类变量,用static修饰的变量是类变量.那么类变量和实例变量有什么区别呢?我们已经知道:一个类通过使用new运算符可以创建多个不同的对象,这些对象将被分派不同的内存空间,现在再说得准确些就是:不同的对象的实例变量将被分派不同的内存空间,假如类中的成员变量有类变量,那么所有的对象的这个类变量都分派给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量.也就是说对象共享类变量.如class Takecare stati

8、c int x;int y; .class A Takecare A1=new Takecare();Takecare A2=new Takecare();A1.x=18这时假如输出A1.x,A2.x的值,结果相同都是18见例子 StaticTest.java当Java程序执行时,类的字节码文献被加载到内存,假如该类没有创建对象,类的实例成员变量不会被分派内存.但是,类中的类变量,在该类被加载到内存时,就分派了相应的内存空间.假如该类创建对象,那么不同对象的实例变量互不相同,即分派不同的内存空间,而类变量不再重新分派内存,所有的对象共享类变量,即所有的对象的类变量是相同的一处内存空间,类变量的

9、内存空间直到程序退出运营,才释放所占有的内存.4.4.2. 通过类名直接访问类变量类变量在类的字节码加载到内存时就分派了内存空间,并且被所有的对象共享,因此,Java语言允许通过类名直接访问类变量.class Statictest2static int a=1;class Pointpublic static void main(String args)int c = Statictest2.a;System.out.println(c);4.4.3. 实例方法和类方法的区别当类的字节码文献被加载到内存时,类的实例方法不会被分派入口地址,当该类创建对象后,类中的实例方法才分派入口地址,从而实例

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

11、口地址,因此,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();/合法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁