Java基础第6章类设计.doc

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java基础第6章类设计

第六章 类设计 面向对象是一种强力的软件开发方法,它将数据和操作视为一个相互依赖、不可分割的整体。由于面向对象的方法更符合人们的思维习惯,同时有助于控制软件的复杂性、提高效率,从而得到了最广泛的认可,也已经成为目前最为流行的一种软件开发方法。在各个不同版本的中,对面向对象理念的解释也都是大同小异。其中以是Coad、Yourdon的:“面向对象=对象+类+继承+消息通讯”最为著名。也被人们所熟知。 6.1 类与对象 对象的初始化通常由类的构造器来完成。我们可以简单的把构造器理解为一种特殊的成员方法,在每次创建对象时自动被调用。使用构造器要注意以下几个问题: 1.构造器必须与类名相同; 2.构造器不能添加返回类型; 3.构造器只能用范围限定修饰符来修饰; 4.构造器一般是公有的; 5.构造器通常仅仅进行对象的初始化工作; 6.构造器是被系统自动调用的,不能像调用其他普通方法那样显式的调用构造器。 下面先看一个circle类的例子 例6.1 : public class test { public static void main(String args[]) { circle c = new circle(); c.output(); } } class circle { double r;//半径 double pai;//圆周率 public circle() { r = 3.5; pai = 3.14; } public void output() { System.out.print(圆的面积为:\t); System.out.println(pai*pai*r); } } 当主方法使用new关键字来创建circle对象时,就会自动调用构造器。其实除了可以用构造器进行初始化外,还能通过“语句块”的方式来实现。下面就通过“语句块”的方式来改写circle类,代码如下: 例6.2 : class circle { double r;//半径 double pai;//圆周率 { r = 3.5; pai = 3.14; } public void output() { System.out.print(圆的面积为:\t); System.out.println(pai*pai*r); } } 这看起来很难理解。然而我们只需要知道JAVA中能支持这种用法就够了。其实普通的“语句块”是很少用到的。用的更多的是static“语句块”来给类中的静态属性初始化。从上面的代码中,我们很容易的发现:很显然把圆周率(pai)定义为静态的更为合理一些。 例6.3 : class circle { double r;//半径 static double pai;//圆周率 {//普通(非静态)语句块 r = 3.5; } static //静态语句块 { pai = 3.14; } public void output() { System.out.print(圆的面积为:\t); System.out.println(pai*pai*r); } } 其实JAVA引入 “语句块”的概念也是无奈之举:因为众所周知,JAVA是不支持静态构造器的。所以引入“语句块”就是为了解决静态属性初始化的问题。从上面的例子我们能够非常清楚的看出“语句块”就是用一对{}括起来的属性赋值语句,并且本身不能接受任何参数。所以JAVA中的“语句块”跟C#中的静态构造方法比起来就落了下乘。然而有总剩余无,我们所能做的也仅仅是期望在新的JDK版本中能有新的突破。 通过上面的例子,我们了解了“语句块”的概念。那么也需要知道构造器、非静态“语句块”、静态“语句块”在类实例化时的调用顺序。大多数的读者,往往并不太关心这种非常细节的技术问题。试想一下在非静态“语句块”中和构造器中都对同一个属性赋了值,那么最终是哪一个值呢?这种细节的东西如果没掌握住,那么在调试程序的时候会浪费大量的时间,并且往往找不到问题的所在。构造器与非静态“语句块”每实例化一个对象就调用一次。而静态“语句块”则是不管实例化多少个对象,都只在实例化第一个对象时才被调用一次。而调用的先后顺序是:静态语句块-(非静态语句块—构造器。 下面给出一个可以运行的程序,读者可以编译运行它来加深理解。 例6.4 : public class transferSequence { { System.out.println(**我是非静态的代码块,创建多少个对象我就被调用多少次); } static { System.out.println(--我是静态的代码块,无论创建多少个对象我都被调唯一的调用次);

文档评论(0)

cuotian + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档