Alpha's Tech Space

一个关于软件开发的技术交流空间,希望和大家共同进步!(.net/C/C++/Java)

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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只有一个,它被ab共享。

 

在定义了类之后,就可以生成对象了。对象的生成是用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()

 

 

 

 

 

相关文章:

 

读书笔记:《Java2 教程》(一)

读书笔记:《Java2 教程》(

读书笔记:《Java2 教程》(三)

posted on 2005-06-02 18:36  Lexrate  阅读(714)  评论(0编辑  收藏  举报