限定符

     在一条语句中使用多个限定符时,它们的顺序无关紧要,只要位于要限定的元素之前即可。方法的返回类型(如void,int)等不是限定符。

一、对方法和变量限定符(public,private,prtected)

封装:防止类中的变量被其它类读取或修改,要使用这些变量,只能通过调用该类的方法。
默认:声明变量和方法时,如果没有使用任何访问控制限定符,则它们对同一个包中的任何类都是可用的。
l 对于声明时没有使用任何限定符的变量,同一个包中的其它任何类都可以读取或修改。
l 而对于声明时没有使用任何限定符的方法,同一个包中的其它任何类可以调用它。
私有(private)私有是完全将方法或变量隐藏起来,不被其它任何类使用,它们仅在其所在的类中是可见的。任何私有变量和私有方法都不能被子类继承。以下情况可使用私有变量:
l 其他类没有理由使用该变量时。
l 其他类修改该变量将可能带来严重的后果。
公有(public)定义的变量和方法可提供任何类使用。所有的公有方法和变量都会被子类继承。注:main()方法必须是公有的,否则Java解释器将不能调用它。
保护(protected)定义的变量和方法可供子类和同一个包中的类使用。注:子类并不与超类都位于同一个包中,例如:Appletjava.awt.Panel的子类,但它位于javax.swing包中。
访问控制和继承:子类的方法不能比超类的方法更严格,但可以更松。
l 超类中为公有的方法在子类中必须也是公有的。
l 超类中为保护的方法在子类中可以是保护或公有的,但不能是私有的。
l 超类中为默认的方法在子类中其访问控制可以更加严格。
l 私有的方法根本不能继承。

二、静态变量和方法

静态变量和方法:又称为类变量和类方法,它既可以用类名和变量名,并用句点连接起来(如:Color.blackString.valueOf()等)也可以使用类的对象名用句点连接。但对于类变量和类方法而言,使用类名更好。

三、关于Final

l Final的类不能被继承
l Final方法不能被子类覆盖
l Final变量的值不能被修改
例:
 
public static final int TOU = 7;
static final String TITLE = "caption";
1.  Java2中,任何类型的变量都可以是final的:类变量,实例变量,局部变量
2.  首次开发一个类时,没有理由使用final。然而如果要使用这样的类的执行速度快,可以将一些方法修改为final的。
3. 私有方法是final的,而无需显式地声明,因为不可以在子类中覆盖它们。
4.  final类中,所有的方法将都是final的,因此声明时无需使用限定符。

四、包

使用包的主要原因:
l 包能够将类组织成单元
l 包减少了名称冲突带来的问题
l 包能够大面积地保护类、变量和方法,而不是分别对每个类进行保护
l 包可用于标识类
包的使用机制:
l 如果使用的类位于包java.lang中(如:System),无须使用import导入,java.lang包中的类将自动被导入到所有的程序中。
l 如果使用的类位于其它包中,可以通过全名(包括包名)来引用。
     例:java.awt.Font f = new java.awt.Font();
l 对于频繁使用的类,可以导入单个类或者整个包。类或包被导入后,可通过名称引用。
l 没有被指定其所属包的类将被放到一个未命名的默认包中。
关于import
例:
import java.util.Vector;
import java.awt.*
注:
l import java.awt.*将导入该包中的所有公有类,但不会导入诸如p_w_picpathpeer等子包。要想导入复杂包层次结构中的所有类,必须手工显式地导入层次结构的每一级。使用import时要么导入包中的所有类,要么导入单个类。
l import语句中使用星号只导入包中的公有类,隐藏类仍被隐藏,只能被包中的其他类使用。
l 导入整个包并不会降低程序的速度,也不会增加其长度;只有代码中实际使用的那些类才会被加载。但导入整个包会使阅读困难。
l 如果导入的两个包中有相同的类,若要使用此类,则发生名称冲突,编译出错。
包名的命名习惯
     Sun公司推荐的一种包命命名规则是,使用Internet域名,并将其中的元素颠倒过来,包名一般都小写。
     例如:Internet域名为naviseek.com,则包名为:com.naviseek