创建变量
将介绍一个简单的名为Virus的类对象,它活着的唯一目标就是尽可能地繁殖。
为完成其工作,Virus需要执行多种操作,这些都被实现为类的行为。
方法需要的信息将存储在属性中。
对象的属性表示对象为完成其任务所需的变量。
这些变量可以为的数据类型,如整数、字符、浮点数,也可以为数组或类对象,如String和Calendar。
对象的变量可以在对象所包含的任何一个方法中使用。
按照惯例,在创建类的class语句之后和在创建方法之前,需要立即创建变量。
Virus对象需要一种方式指出文件已感染病毒。有些计算机病毒修改这样的字段,
即存储文件最后修改时间的字段,例如,有些病毒可能将时间从7:41:20改为7:41:61。
由于正常情况下,文件不可能在一分钟的第 61 秒修改,因此该时间表明文件感染了病毒。
Virus对象在整型变量newSeconds中使用了86这个数值(由于秒数的最大值为60,
因此在这个数值是不正确的)。下面的语句创建一个名为Virus的类,
它有一个名为newSeconds的属性以及其他两个属性:
public class Virus {
public int newSeconds = 86;
public String author = "Sam Snett";
int maxFileSize = 30000;
}
这3个变量都是类的属性,它们是newSeconds、maxFileSize和author。
在变量声明语句中指定public等关键字称为访问控制,
因为它决定了其他类对象将如何使用该变量或它们是否可以使用这些变量。
将变量声明为public后,使用Virus对象的其他程序也可以来修改该变量的值。
例如,如果另外一个程序为数值92赋予了特别重要的意义,则它可以将newSeconds变量的值改为92。
下面的语句创建一个名为influenza的Virus对象,并设置其变量newSeconds:
Virus influenza = new Virus();
influenza.newSeconds = 92;
在Virus类中,变量author也是public的,因此也可以在其他程序中随意修改它的值。
另一个变量masFileSize只能在其所属的类中使用。
将类中的变量声明为public时,该类将无法控制其他程序使用该变量的方式。
在很多情况下,这可能不是问题。例如,可将author变量该为任何表示病毒作者的名字或假名。
如果制造病毒的作者被起诉,则他的名字可能会出现在法庭文件中,所以不要用一个很傻的名字。
通过限制变量的访问权限,可避免因其他程序设置错误的值而导致错误。
就Virus类而言,如果newSeconds被设置为60或更小,就不能成为报告文件是否感染病毒的可靠方式。
因为有些文件无论是否感染病毒,都可能在那个秒数被保存。
要避免Virus类出现这样的问题,需要做下面的两项工作:
将变量从public该为protected或private,后两者提供了更严格的访问限制;
添加修改变量值的行为以及向其他程序报告变量的值。
protected变量只能在其所在的类、该类的子类以及同一个包(package)的其他类中使用。
包是一组用于完成相同目标的相关类。例如,java.util包包含很多有用的工具,
如日期和时间编程以及文件归档。通过在Java程序中使用import和*,如import java.util.*,
就可以在程序中很容易地引用包中的所有类。
private变量的访问限制比protected变量更严格,只能在其所属的类中使用。
除非对变量做任何修改都不会影响类的功能,否则应将变量声明为private或protected。
下面的语句将变量newSeconds声明为private的:
private int newSeconds = 86;
如果要让其他程序能够使用变量newSeconds,必须创建相应的行为,