Java中的类
在介绍过数据类型之后,现在开始接触Java中“Class”的概念。在开始的时候,本文就提到了类,各位可以把它理解为一种特殊的自定义数据类型。
类的一般形式是这样的:
Class CLASSNAME
{
DateType FIELDNAME;
RETURNTYPE METHODNAME(parameters)
{
Body of the method
}
}
可能有的朋友看后没有理解,不要紧,我将详细解释。
1 类是由数据成员(Field)和方法(Method)组成的,数据成员是类中的数据部分,它可以被类中的方法使用。方法是类中对于数据的操作,用于完成特定的功能。
2 类中各个部分的限定符号。这些限定符号包括
Public
Private
Protected:
Static:
Final:
其中,前三个是访问范围限定符。它们分别指明,被修饰的数据或者方法可以被
任何其它部分使用;
只能被这个类内部的方法访问;
可以被本类所在的包内的其它类使用;(包[package]的概念将在稍后的章节做出说明)
后两个可以称为实例化修饰限定符。
Static指明,被修饰的对象和方法是属于整个类的,它不需要被实例化。无论这个类生成多少实例,静态的数据和方法却只有一份。
Final的意思类似于const, 它意图使被修饰的数据或者对象保持不变。需要注意的是,当final修饰的是对象时,它不能保证对象本身保持不变。
举个例子吧:
class Body
{
public long idNum;
public String nameFor;
public Body orbits;
public static long nextID = 0;
}
其中,
需要被实例化的变量是:idNum, nameFor, Orbits
属于类变量或者静态变量的是: nextID
如果生成Body的两个实例a,b
Body a,b;
那么a.idNum and b.idNum是各自独立的,而nextID只有一个,它被a和b共享。
在定义了类之后,就可以生成对象了。对象的生成是用New 语句来实现的。如:
Body sun = new Body();
这里就出现了一个新的概念,Contructor(构造函数) 。构造函数是一种特殊的函数,它在对象创建时被自动的调用,其作用在于完成必要的初始化工作。对于构造函数,一些特殊的规定如下:
1 构造函数的名字和类的名字完全相同。
2 构造函数没有返回值。注意,是根本就没有返回值,而不是说无类型。象 void ContructorName() 这样的写法是错误的。
3 在同一个类中,可以有多个构造函数,它们通过参数来进行区别,这提现了OOP中的重载和多态的特性。
class Body {
public long idNum;
public String name = “<unnamed>”;
public Body orbits = null;
private static long nextID = 0;
Body()
{ //构造函数的例子
idNum=nextID++;
}
}
l Constructor是: Body()
然后,我们就可以这样来声明创建一个对象:
Body sun = new Body();
其结果是令 idNum=0;
我们还可以在Body 类中提供多个构造函数,如
Body(String bodyName, Body orbitsAround)
{
this();
name = bodyName;
orbits = orbitsAround;
}
其中this是一个特殊的关键字,代表这对象本身;this()的含义是调用那个没有参数的构造函数。
最后,要介绍另外一个特殊的函数: Finalize()
它的名字是固定的,而且没有任何参数和返回值。
这个函数在Java的垃圾回收器消毁一个对象前被调用。有些类似于C++中的析构函数。可以在任何一个类中添加Finalize()函数。但是需要注意的是,这个函数是不支持重载的,就是说,每个类中,最多只能存在一个固定格式的Finalize()。
相关文章: