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

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

  1. 1、本文档共24页,可阅读全部内容。
  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文档。上传文档
查看更多
5.10.3 main()方法   在前面的章节中已经介绍,如果一个类要被Java解释器直接装载运行,那么这个类中必须有main()方法。   由于Java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public,又因为Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的。该方法接收一个String类型的数组参数,该数组中保存执行Java命令时传递给所运行的类的参数。   向Java中传递参数可用如下命令:     java 类名称 参数1参数 2 参数 3   通过运行下面的程序可了解如何向类中传递参数以及程序又是如何取得这些参数的。   【例5-29】 TestMain.java。   运行程序:     java TestMain first second   输出结果:     first     second   程序说明:   (1) 程序第14行判断输入参数的个数是否为两个参数,如果不是,则退出程序。   (2) 所有接收的参数都被存放在args[]字符串数组中,用for循环输出全部内容。 5.10.4 静态代码块   一个类可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码块被执行,且只执行一次。静态代码块经常用来进行类属性的初始化。   【例5-30】 TestStaticDemo5.java。   程序说明:   (1) 第1~12行声明一个名为Person的类。   (2) 第8~11行声明一个静态代码块,此代码块放在Person类中。   (3) 第15~18行在类TestStaticDemo5中也声明一静态代码块。   (4) 第22、23行分别产生了两个Person类的匿名对象。   从程序运行结果中可以看出,放在TestStaticDemo5类中的静态代码块首先被调用,这是因为程序首先执行TestStatic Demo5类,所以此程序的静态代码块会首先被执行。程序在22、23 行产生了两个匿名对象,Person类中的静态代码块只执行了一次,而且静态代码块优先于静态方法,由此可以发现,静态代码块可以为静态属性初始化。 案例2 static成员变量和实例变量的区别 【案例描述】   用程序模拟赵庄和李庄两个村庄,这两个村庄共用一口水井。??? 【代码与注释】 5.11 构造方法的私有   方法依实际需要,可分为public与private。同样地,构造方法也有public与private之分。到目前为止,所使用的构造方法均属于public,它可以在程序的任何地方被调用,所以新创建的对象也都可以自动调用它。如果构造方法被设为private,则无法在该构造方法所在的类以外的地方被调用。   【例5-31】 TestSingleDemo1.java。   由上面程序可见,程序第3行在声明构造方法时将之声明为private类型,则此构造方法只能在本类内被调用,main方法也放在 TestSingleDemo1 类的内部,所以在本类中可以自己产生实例化对象。   上面的程序似乎没有什么意义,因为一个类最终都会由外部去调用,如果这么做,岂不是所有构造方法被私有化了的类都需要这么调用吗?那么程序岂不是有很多main()方法吗?举这个例子主要是让读者清楚:构造方法虽然被私有了,但并不一定此类不能产生实例化对象,只是产生这个实例化对象的位置有所变化,即只能在本类中产生实例化对象。   【例5-32】 TestSingleDemo2。   程序说明:   (1) 第6~9行将Person类的构造方法封装起来,外部无法通过其构造方法产生实例化对象。   (2) 第5行声明一个Person类的实例化对象,此对象在Person类内部实例化,所以可以调用私有构造方法。另外,此对象被标识为static类型,表示为一静态属性,同时此对象被私有化。在声明Person对象时加上了一个final关键字,此关键字表示Person的对象p不能被重新实例化。关于final的介绍请参见第6章接口部分的内容。   (3) 第21行声明一个Person类的对象p,但未实例化。   (4) 第22行调用Person类中的getP()方法,此方法返回Person类的实例化对象。   从上面程序中可以看出,无论在Person类的外部声明多少个对象,最终得到的都是同一个引用,因为此类只能产生一个实例对象,这种做法在设计模式中称为单态模式。所谓设计模式,也就是在大量的实践中总结和理论化之后优选的代码结构、编程风格以及解决问题的思考方式。 5.12 对象数组的使用   前面章节已介绍过如何以数组来保存基本数据类型的变量。类似地,对象也可以用数组来存放,具体步骤如下:  

文档评论(0)

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

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

1亿VIP精品文档

相关文档