点击查看:2015计算机等级考试二级Java入门教程章节汇总
点击查看:2015计算机等级考试二级Java入门教程第五章汇总
5.1 什么是类?
正像你在第1章中看到的,类是对一类特定对象的规格说明。我们可以用类定义创建一类对象,通过创建对象来组合所有属于该类的组件。
如果你感觉这些太抽象了,请你回顾一下在上一章我们用过的String类。这是一个字符串的定义,它很一遇理解,其中拥有需要内置的所有操作。String对象是一个不可缺少的类,它使得在程序中对字符串处理变得跟家容易。
对于字符串来说,String类是最复杂的。它力求在任何程序中都便于应用。实际上,其中包含的有关String对象的操作功能,覆盖了你使用字符串的所有情形。在大多数情况下,你自己的类不需要这样复杂。通常你定义的类只适用于你的特定应用。看似非常复杂的对象,比如,Plane(飞机)或者Person人,可能用一个很简单的类说明就能够很好地满。
为了进一步说明这两种变量之间的区别,请看下面的示意图。
这个示意图是对类Sphere的图解,该类中包含一个类变量PI和四个实例变量radius、xCenter、yCenter和zCenter .globe和ball两个对象都拥有它们自己的一套变量:radius xCenter, yCenter和zCenter,然而,它们两个共享类变量PI的惟一一个副本。
在类定义中,为什么需要两种变量呢?由于实例变量是区分每个对象的参数,所以很明显,它是必要的。球的半径和球心坐标是确定一个特定的Sphere对象大小及空间位置的基本数据。然而,虽然变量PI也是球的一个基本参数,例如可以用它来计算球的体积,然而,它的值永远不会变化,所以每个对象存储一个PI是一种浪费。顺便说一句,在标准类Math中也可以得到这个值,所以在本例中声明这个变量显得有些多余,但是你可以从中获得这种常规的用法。由此,类变量的一种用法就是保存一个兀这样的对所有对象公用的常数值。
类变量的另一种用法是用来跟踪一个类中的所有对象共有的值,即使没有对象定义,也希望它有效。例如,如果你想在你程序中保存已经建立了多少个类对象的统计,就要定义一个类变量来存储这个统计值。由于你希望在没有对象被声明的时候,count变量也可以应用,所以使用类变量是不可避免的。
类定义中的方法
类中定义的方法提供了可以对类定义中说明的变量所实施的操作。与类定义中的变量类似,方法也有两种形式:实例方法(instance method)和类方法( class method ).即使在类中不存在任何对象时,你也可以执行类方法,而实例方法则只能被一个关联的特定对象所执行,因此如果没有对象存在,就不能执行实例方法。与类变量一样,类方法也要使用关键字static声明,所以它们有时也被称作静态方法(static methods)
由于没有对象存在时,类方法也可以被执行,所以它们不能引用实例变量。仔细考虑一下,你会觉得这一点是相当合乎情理的,尝试对可能不存在的变量进行操作,一定会引发错误。事实上,Java编译器不会允许你做这样的尝试。如果你在一个类方法的代码中引用了一个实例变量,将不会通过编译,并得到一个错误信息。正像你所看到的,一个Java应用程序开始执行的方法main()必须总是被声明为静态(static)的。现在,这个原因应该显而易见了。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |