类定义                                                                      

Java 程序的基本单位是类,你建立类之后,就可用它来建立许多你需要的对象。Java把每一个可执行的成分都变成类。

类的定义形式如下:

<权限修饰符> [一般修饰符]  class  <类名> {

            [<属性定义>]

            [<构造方法定义>]

            [<方法定义>]

    } 

这里,类名要是合法的标识符。在类定义的开始与结束处必须使用花括号。你也许想建立一个矩形类,那么可以用如下代码:

public class Rectangle{
    ......//矩形具体的属性和方法
}

6:构造方法                                                                     

6.1:什么是构造方法

类有一个特殊的成员方法叫作构造方法, 它的作用是创建对象并初始化成员变量。 在创建对象时,会自动调用类的构造方法。

6.2:构造方法定义规则

Java 中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void) 。另外,构造方法一般都应用 public 类型来说明,这样才能在程序任意的位置创建类

的实例--对象。

6.3:示例

下面是一个 Rectangle 类的构造方法,它带有两个参数,分别表示矩形的长和宽: 

public class Rectangle{
public Rectangle(int w,int h) {
width=w;
height=h;
} 
}

6.4:说明

每个类至少有一个构造方法。 如果不写一个构造方法, Java 编程语言将提供一个默认的,该构造方法没有参数,而且方法体为空。

注意:如果一个类中已经定义了构造方法则系统不再提供默认的构造方法。

 

7:析构方法                                                                      

析构方法 finalize 的功能是: 当对象被从内存中删除时, 该成员方法将会被自动调用。通常,在析构方法内,你可以填写用来回收对象内部的动态空间的代码。

特别注意:当我们去调用析构方法的时候,并不会引起该对象实例从内存中删除,而是不会起到任何作用。在 Java 编程里面,一般不需要我们去写析构方法,这里只是了解一下就可以了。

8:属性                                                                         

8.1:属性是什么

简单点说,属性就是对象所具有的静态属性。

8.2:定义规则

Java 类中属性的声明采用如下格式:

访问修饰符 修饰符 类型 属性名称=初始值;

访问修饰符:可以使用四种不同的访问修饰符中的一种,包括 public(公共的)、

protected(受保护的) ,无修饰符和 private(私有的) 。public 访问修饰符表示属性可以从任何其它代码调用。private 表示属性只可以由该类中的其它方法来调用。protected 将在以后的课程中讨论。

修饰符:是对属性特性的描述,例如后面会学习到的:static、final 等等。

类型:属性的数据类型,可以是任意的类型。

属性名称:任何合法标识符

初始值:赋值给属性的初始值。如果不设置,那么会自动进行初始化,基本类型使用缺省值,对象类型自动初始化为 null。

 

8.3:说明

属性有时候也被称为成员变量、实例变量、域,它们经常被互换使用。

9:方法                                                                         

9.1:方法是什么

方法就是对象所具有的动态功能。

9.2:定义规则

Java 类中方法的声明采用以下格式:

 

访问修饰符 修饰符 返回值类型 方法名称 (参数列表) throws 异常列表 {方法体}

 

访问修饰符:可以使用四种不同的访问修饰符中的一种,包括 public(公共的)、protected(受保护的) ,无修饰符和 private(私有的) 。public 访问修饰符表示方法可以从任何其它代码调用。private 表示方法只可以由该类中的其它方法来调用。protected 将在以后的课程中讨论。

修饰符:是对方法特性的描述,例如后面会学习到的:static、final、abstract、synchronized 等等。

返回值类型: 表示方法返回值的类型。 如果方法不返回任何值, 它必须声明为 void(空)。Java 技术对返回值是很严格的,例如,如果声明某方法返回一个 int 值,那么方法必须从所有可能的返回路径中返回一个 int 值(只能在等待返回该 int 值的上下文中被调用。 )

方法名称:可以是任何合法标识符,并带有用已经使用的名称为基础的某些限制条件。 

    参数列表:允许将参数值传递到方法中。列举的元素由逗号分开,而每一个元素包含一

个类型和一个标识符。在下面的方法中只有一个形式参数,用 int 类型和标识符 days 来声

明:public void test(int days){}

    throws 异常列表:子句导致一个运行时错误(异常)被报告到调用的方法中,以便以

合适的方式处理它。异常在后面的课程中介绍。

花括号内是方法体,即方法的具体语句序列。

 

9.3:示例

比如现在有一个“车”的类——Car, “车”具有一些基本的属性,比如四个轮子,一个方向盘,车的品牌等等。当然,车也具有自己的功能,也就是方法,比如车能够“开动”—

—run。要想车子能够开动,需要给车子添加汽油,也就是说,需要为 run 方法传递一些参数“油”进去。车子跑起来过后,我们需要知道当前车辆运行的速度,就需要 run 方法具有返回值“当前的速度” 。

package cn.javass.javatest;
public class Car {// 车这个类
private String make;// 一个车的品牌
private int tyre;// 一个车具有轮胎的个数
private int wheel;// 一个车具有方向盘的个数 
public Car() {
// 初始化属性
 make = "BMW";// 车的品牌是宝马
 tyre = 4;// 一个车具有4个轮胎
 wheel = 1;// 一个车具有一个方向盘
}
/**
 * 车这个对象所具有的功能,能够开动
 * @param oil 为车辆加汽油的数量
 * @return 车辆当前运行的速度
 */
public double run(int oil) {
// 进行具体的功能处理
return 200.0;
}
}

9.4:形参和实参

形参:就是形式参数的意思。是在定义方法名的时候使用的参数,用来标识方法接收的参数类型,在调用该方法时传入。

实参:就是实际参数的意思。是在调用方法时传递给该方法的实际参数。

比如:上面的例子中“int oil”就是个形式参数,这里只是表示需要加入汽油,这个方法才能正常运行,但具体加入多少,要到真正使用的时候,也就是调用这个方法的时候才具

体确定,加入调用的时候传入“80” ,这就是个实际参数。

形参和实参有如下基本规则:

(1) :形参和实参的类型必须要一致,或者要符合隐含转换规则

(2) :形参类型不是引用类型时,在调用该方法时,是按值传递的。在该方法运行时,

形参和实参是不同的变量,它们在内存中位于不同的位置,形参将实参的值复制一份,在该方法运行结束的时候形参被释放,而实参内容不会改变。

(3) :形参类型是引用类型时,在调用该方法时,是按引用传递的。运行时,传给方法的是实参的地址, 在方法体内部使用的也是实参的地址, 即使用的就是实参本身对应的内存空间。所以在函数体内部可以改变实参的值。

9.5:参数可变的方法

从 JDK5.0 开始,提供了参数可变的方法。

当不能确定一个方法的入口参数的个数时,5.0 以前版本的 Java 中,通常的做法是将

多个参数放在一个数组或者对象集合中作为参数来传递,5.0 版本以前的写法是:

int sum(Integer[] numbers){…}
//在别处调用该方法
sum(new Integer[] {12,13,20});
而在 5.0 版本中可以写为:
int sum(Integer... numbers){//方法内的操作}

注意:方法定义中是三个点

//在别处调用该方法

sum(12,13,20);//正确

sum(10,11); //正确

也就是说,传入参数的个数并不确定。但请注意:传入参数的类型必须是一致的,究其本质,就是一个数组。

显然,JDK5.0 版本的写法更为简易,也更为直观,尤其是方法的调用语句,不仅简化很多,而且更符合通常的思维方式,更易于理解。