类声明
[
public][
abstract][
final]
class
NameOfClass [
extends
Super][
implements
Interfaces]
pubilc:声明该类可以在其它任何类中使用。缺省时,该类只能被同一个包中的其它类使用。
abstract:声明该类为抽象类,不能被实例化。一个抽象类可以包含抽象方法,而抽象方法没有实现,所以抽象类不具备实际功能,只用于衍生子类。
final:声明该类不能被继承,即没有子类。不能通过扩展这个类来创建新的类。
extends:声明该类的父类,一个子类从其父类继承变量和方法。在
Java中,除
Object类之外,每个类都有一个父类。如果某个类没有父类,
Java就认为它是
Object类的子类,所以所有其它类都是
Object类的直接子类或者间接子类。注意在
extends关键字之后只能跟唯一的父类名,即使用
extends只能实现单继承。
implements:声明该类要实现的一个或多个接口,在
implements关键字之后给出该类实现的接口的名字表,以逗号分隔。
变量声明
[可访问性修饰符][
static][
final][
transient][
volatile]类型
变量名
可访问性修饰符:后面介绍。
static:声明该变量为类变量,以区别一般实例变量。类变量的所有实例使用同一个副本,属于类的公共域,为该类所有对象所共享,可看作是类范围内的一种全局变量。静态变量的值由静态方法来改变。
final:声明该变量为常量。注意使用关键字
final声明常量时需要说明常量的数据类型,同时指出常量的具体值。
transient:声明该变量为瞬态变量,瞬态变量不是对象的持久部分。
volatile:声明该变量可能被并存运行中的多个线程同时控制或修改,即该变量不仅仅被当前程序所控制,而且在运行过程中可能存在其它未知程序的操作来影响和改变该变量的值。
volatile关键字把这个信息传送给
Java的运行系统。
Volatile关键字通常用来修饰接受外部输入的域。
方法声明
[可访问性修饰符][
static][
abstract][
final][
native][
synchronized]返回类型
方法名(参数表)[
throws
异常类名表]
static:声明该方法为类方法。类方法有以下三点需要注意:
调用类方法时,应该使用类名做前缀,而不是使用某一个具体的对象名;
非
static方法是属于对象的方法,所以在创建对象时,非
static方法在对象分配到的内存中拥有自己专用的代码段,而
static方法属于整个类,它在内存中的代码段随着类的定义而装载,不被任何一个对象单独拥有;
static方法不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的类变量,即
static方法只能处理
static变量。
abstract:声明该方法为抽象方法,即仅有方法声明部分,而没有具体方法体和操作实现的方法。需要注意的是抽象方法必须存在于抽象类中,一个非抽象类中出现抽象方法是非法的,也即一个抽象类的子类如果不是抽象类,则它必须为父类中的所有抽象方法编写方法体。当然抽象类不一定只能拥有抽象方法,还可以包含非抽象方法。
final:声明该方法为最终方法。最终方法不能被当前类的子类重新定义。需要注意的是所有已被
private修饰符限定为私有的方法以及所有包含在
final类中的方法,都被缺省地认为是最终方法。因为这些方法要么不可能被子类继承,要么根本没有子类,所以都不可能被重载,自然都是最终方法。
native:声明用其它语言书写方法体的特殊方法,这里的其它语言包括
c、
c++、
FORTRAN、汇编语言等。
native方法的方法体在外部用其它语言写成,所以所有的
native方法都没有方法体。
synchronized:声明该方法为同步方法。
synchronized修饰符主要用于多线程共存程序中的协调和同步。如果
synchronized关键字修饰的是类方法,那么在这个方法被调用执行前,将把系统类
Class中对应当前类的对象加锁;如果
synchronize关键字修饰的是实例方法,那么在这个方法被调用执行前,将把当前对象加锁。
类成员的访问控制
在默认情况下,一个类作为整体可以被处于同一个包中的类所访问和引用;如果类被声明为
public,那么在程序中使用
import语句引入该类之后,就可以被所有其它类所访问和引用。
但是一个类作为整体对于程序的其它部分可见,并不代表类的所有域和方法也同时对程序的其它部分可见,还需要看这些域和方法自己的访问控制符。
Java语言支持对变量和方法的四个访问等级:
private、
protected、
public以及缺省修饰符。下表给出各访问等级的访问权限。
表格
1
:
访问修饰符的访问权限
可访问性修饰符
类
子类
包
所有
private
yes
protected
yes
yes
yes
public
yes
yes
yes
yes
缺省
yes
yes
参考:《
Java语言与面向对象程序设计》,朱福喜等编著。