类与对象.pptVIP

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
类与对象

* 被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类的属性,而不属于任何一个类的具体对象。换句话说,对于该类的任何一个具体对象而言,静态属性是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值,同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作。 一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象; 银行帐户(银行利率) 记录已创建的本类对象的个数 每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。   类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。 3.8.2 生命期 1、局部变量生命期 局部变量的生命期与其作用域有关。 其在程序执行流程中,当到达作用域时变量开始使用,生命期开始,超出作用域则不再使用,生命期结束。 内存栈区 2、数据成员生命期与对象生命期 数据成员生命期:数据成员随对象创建而分配内存,随对象销毁而销毁,其生命期与对象生命期一致。 对象生命期:new创建时生命期开始,没有引用指向时生命期结束。 内存堆区:垃圾收集机制 * class Rectangle{ ……//内容略 } class A{ Rectangle r; void set(Rectangle re){r = re;} } public class Test{ public static void main(String args[]){ Rectangle r1 = new Rectangle(1,1); A b = new A(); b.set(r1); A c = new A(); c.set(r1); } } width:1 height:1 r1 r b Rectangle对象 r c 类A对象 堆区 栈区 …… * 3.9 静态数据成员与静态方法 实例数据成员,实例方法 类数据成员,类方法(静态数据成员,静态方法) * 3.9.1 静态数据成员 类的静态数据成员概念 数据成员属于类,而不属于任何特定的对象,由类的所有对象共享。 类:Student 属性: 学号,姓名,成绩 学生数 方法:显示学生信息 对象:aaa “001”,“aaa”,89 对象:bbb “002”,“bbb”,78 * 1、类的静态数据成员声明 用static修饰符修饰类的数据成员 2、类的静态数据成员访问 类静态数据成员可通过类名直接访问,也可以通过对象访问,在类的方法中直接访问。 注意:类的静态数据成员值被所有对象共享,任何对象都可以访问类的静态数据成员,但要注意,它们使用的是同一个数据,操作的是同一块内存。无论哪个对象修改了它,对其它对象来说,它也已经变了。 * 【例3-14】类的静态数据成员访问 class A{ static int i ; void change(int i1) { i=i1;} } public class Test{ public static void main(String args[]){ A.i=10; A a=new A(); A b=new A(); System.out.println(A.i+,+a.i+,+b.i); a.change(40); System.out.println(A.i+,+a.i+,+b.i); b.i+=10; System.out.println(A.i+,+a.i+,+b.i); } } * 3、静态数据成员的初始化 默认初始值,声明时直接初始化,静态初始化器。 静态初始化器:Java允许通过静态初始化器初始化静态数据成员。静态初始化器语法: class A{ static int i; static int j=10; static int k; static int m; static{ k=20; m=30; } } static{ ...//静态数据成员初始化语句 } * 4、实例数据成员与静态数据成员的对比 类静态数据成员与实例数据成员二者区别: (1)不管有多少类的实例,类的静态数据成员只有一份拷贝,即所有对象共享相同的静态数据成员;而每个实例对象都有自己的实例数据成员。 (2)类的静态数据成员仅在类初次使用时创建、初始化以后不会再初始化了。而每当创建类的对象时都为实例数据成员分配存储空间,并初始化。 (3)实例数据成员只能通过对象来访,而类静态数据成员既可以通过类名来访问,也

您可能关注的文档

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档