Java程序案例教程(主编田智、杨艳慈 西安科大版)课件:第5章 类的基本形式07.pptVIP

Java程序案例教程(主编田智、杨艳慈 西安科大版)课件:第5章 类的基本形式07.ppt

  1. 1、本文档共30页,可阅读全部内容。
  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文档。上传文档
查看更多
  2.用this调用构造方法   如果要在程序中用某一构造方法调用另一构造方法,可以用this来实现,具体的调用形式如下:     this();   【例5-24】 TestJavaThis1.java。   程序说明:   (1) 第1~17行声明一个名为Person的类,类中声明了一个无参和一个有参两个构造方法。   (2) 第12行使用this调用本类中的无参构造方法。   (3) 第22行声明一个Person类的匿名对象,调用了有参的构造方法。   从上述程序可以看出,在第22行虽然调用了Person中有两个参数的构造方法,但是由于第12行使用了this调用本类中的无参构造方法,所以程序先去执行Person中的无参构造方法,之后再去继续执行其他构造方法。   如果把this调用无参构造方法的位置任意调换,则可以在任何时候调用构造方法吗?实际上这样理解是错误的。构造方法是在实例化一对象时被自动调用的,也就是说在类中的所有方法中只有构造方法是被优先调用的,所以使用this调用构造方法必须也只能放在构造方法的第一行。下面的程序就是一个错误的程序。 5.10 static关键字的使用 5.10.1 静态变量   在程序中如果用static声明变量,则此变量称为静态变量。那么什么是静态变量呢?使用静态变量又有什么好处呢?   【例5-25】 TestStaticDemo1.java。   输出结果:     我是:张三,今年:25岁,来自:中国     我是:李四,今年:30岁,来自:中国     我是:王五,今年:35岁,来自:中国   程序说明:   (1) 第1~16行声明一个名为Person的类,含有三个属性:name、age、city。   (2) 第6~11行声明Person类的一个构造方法,此构造方法分别为各属性赋值。   (3) 第12~15行声明一个talk()方法,此方法用于返回用户信息。   (4) 第21~23行分别实例化三个Person对象。   (5) 第24~26行分别调用类中的talk()方法输出用户信息。 由上面的程序可以发现,所有的Person对象都有一个city属性,而且所有的属性也全部相同,如图5-12所示。 图5-12 static变量内存示意图   读者可以试着想一想,现在假设程序产生了50个Person对象,如果想修改所有人的city属性,那么是否就要调用50遍city属性进行重新修改呢?显然这样太麻烦了。在Java中提供了static关键字,用它来修饰类的属性后,则此属性就是公共属性。将TestStaticDemo1.java程序稍作修改就形成了TestStaticDemo2.java,如下所示。   【例5-26】 TestStaticDemo2.java。   程序说明:   (1) 第1~15行声明一个名为Person的类,含有三个属性:name、age、city。其中,city为static类型   (2) 第6~10行声明Person类的一个构造方法,此构造方法的作用是分别为name、age属性赋值。   (3) 第11~14行声明一个talk()方法,此方法用于返回用户信息。   (4) 第20~22行分别实例化三个Person对象。   (5) 第23~25行分别调用类中的talk()方法,输出用户信息。   (6) 第28行修改了p1中的city属性。   从上面的程序中可以发现,程序只在第28行修改了city属性,而且只修改了一个对象的city属性,但再次输出时,发现全部对象的city值都发生了一样的变化,这就说明了用static声明的属性是所有对象共享的,如图5-13所示。 图5-13 static变量的使用   从图5-13中可以看出,所有的对象都指向同一个city属性,只要其中有一个对象修改了city属性的内容,则所有对象都会被同时修改。   另外,需要注意一点,用static方式声明的属性也可以用类名直接访问。例如,要想修改city属性中的内容,则可以用如下方式:     Person.city = 美国;   所以有些书上也把用static类型声明的变量称为“类变量”。   既然static类型声明的变量是所有对象共享的内存空间,也就是说无论最终有多少个对象产生,也都只有一个static类型的属性,那么可不可以用它来计算类到底产生了多少个实例对象呢?读者可以想一想,只要一个类产生一个新的实例对象,就都会去调用构造方法,所以可以在构造方法中加入一些计数操作,如下面的程序: 5.10.2 静态方法   static既可以在声明变量时使用,也可以用其来声明方法。用它声明的方法有时被称为“类方法”。   【例5-27】 TestStat

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档