类是Java的核心。由于类定义了一个对象的形式与属性,因此整个JAVA语言建立在这个逻辑
结构之上。同样,类构成了JAVA面向对象程序设计的基础。任何希望在JAVA程序中实现的想
法都必须封装在类中。在一个类中,程序的作用体现在方法中。方法是JAVA创建一个有名字
的子程序的方法。
类的基础
类是对象的模板,对象是类的实例。当你定义一个类时,就生命了该类确切的形式和属性。
通过指定类中包含的数据和对这些数据进行操作的代码来定义一个类。最简单的类可以只包
含代码或只有数据,大部分实际的类二者都有。
我们使用要害字class来声明一个类。通常定义class的形式如下所示:
class classname {
type instance-varable1;
type instance-varable2;
//...
type instance-varableN;
type metbodname1(parameter-list) {
//body of method
}
type metbodname2(parameter-list) {
//body of method
}
//...
type metbodnameN(parameter-list) {
//body of method
}
}
在一个class中定义的数据或叫变量叫做实例变量。代码包含在方法中。总体来说,类中定义
的方法和变量叫做该类的成员。在大部分类中,实例变量由该类所定义的方法调用和访问。
因此,这就决定了类中的数据如何被使用。所有的方法都在类中声明,并且通常都具有如下
形式:
type name(parameter-list) {
//body of method
}
在这里,type指定了由方法返回的数据类型。它可以是任意有效的类型,包括你创建的类类
型。假如方法没有返回值,则其返回类型必须是void。方法的名字由name指定。这个名字可
以是除了那些在当前作用域中已经使用的标识符之外的任意合法标识符。parameter-list是类
型、标识符对组成的序列,每对之间用逗号分开。参数实际上是方法被调用时接收传递过来
的参数值的变量。假如方法没有参数,则参数表就是空的。除了返回void方法外,那些具有
返回类型的方法使用下面的返回语句形式对调用他们的程序返回一个值。
return value;
value是返回值。下面是一个简单的类的例子:
class Sameple {
int a,b;
int sum() {
return a+b;
}
}
声明类的对象
每当创建一个类时,就是在创建一个新的数据类型,可以用这个数据类型去声明这种类型的对
象。然而,获得一个类的对象一般分两步进行。首先,必须声明这个类型的一个变量,这个
变量并没有定义对象本身,而仅仅是一个可以指向对象的变量。第二步,必须获得这个对象
的一个实际的物理拷贝,并将其赋给已声明的那个变量。使用new运算完成这一步。
new运算符为对象动态分配(即在程序运行时分配)内存,并为其返回一个引用。该引用或
多或少的是由new分配给对象的内存的地址。然后该引用被保存在变量中。因此,JAVA中
所有类的对象一定是动态分配的。
下面是一个创建Sample类(前面定义的)对象的例子:
Sample ob = new Sample();
这条语句将刚才提到的两步合二为一了。可以重新写成下面这样一来,更清楚的表示出2步:
Sample ob;
ob = new Sample();
一旦得到一个类对象,就可以使用“.“运算符访问其成员。下面是通常的形式:
object-name.member-name
如,给ob的成员a赋值10,使用下面语句:
ob.a = 10;
构造函数
构造函数在创建对象时立即对其进行初始化。构造函数与它所在的类具有相同的名字,在语
句构成上与方法类似。然而,构造函数没有返回值,甚至也不返回void。这是因为类的构造
函数隐含的返回类型是类类型本身。初始化对象的内部状态,以便使代码创建实例时有一个
完全初始化的、可用的对象是构造函数的任务。
构造函数可以有参数,这些参数接收创建对象时传递给构造的参数。典型情况下,包含在构
造函数参数中的这些值用于初始化对象。当创建每个对象的时候,传递给构造函数的参数即
被指定。