参考:http://www.runoob.com/java/java-modifier-types.html
分为"访问修饰符"和"非访问修饰符"。
类修饰符:
顶级类(外部类)来说,只有两种修饰符:public和默认(default)。
因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。
内部类:本类(private),同包(default),父子类(protected),任何位置(public)。
既然你问的类使用了private修饰符,说明是个内部类。内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。
当一个内部类使用了private修饰后,只能在该类的外部类内部使用。
public 公共类,共有的,以 public 修饰符指定,对所有类可见。
friendly 默认的修饰符(隐藏式声明,什么都不写),只有在相同包中的对象才能使用这样的类。
abstract 抽象类,没有实现的方法,需要子类提供方法实现。抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。抽象类可以包含抽象方法和非抽象方法。
final 最终(非继承)。不能被其他类继承。
private 私有,内部类,只能在一个类的内部。主要用来隐藏类的实现细节和保护类的数据.。
访问控制 |
||||
修饰符 |
当前类 |
同一包内 |
子孙类 |
其他包 |
public |
Y |
Y |
Y |
Y |
abstract |
Y |
Y |
Y |
Y(前面再加public 修饰) |
final |
Y |
Y |
Y |
Y |
default(friendly) |
Y |
Y |
N |
N |
private |
Y |
N |
N |
N |
成员变量修饰符:
public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问。
private(私有访问控制符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。
protected(保护访问控制符)指定该变量可以被自己的类和子类访问。在子类中可以覆盖此变量。
friendly ,在同一个包中的类可以访问,其他包中的类不能访问。
final,最终修饰符,指定此变量的值不能变。
static(静态修饰符)用来声明独立于对象的静态变量,无论一个类实例化多少个对象,它的静态变量只有一份拷贝,只初使化一次。变量属于这个类。也叫类变量,局部变量不能声明为static静态变量。
其拥有的值是可变的 ,而且它会保持最新的值。说其静态,是因为它不会随着函数的调用和退出而发生变化。即上次调用函数的时候,如果我们给静态变量赋予某个值的话,下次函数调用时,这个值保持不变。
transient(过度修饰符)指定该变量是系统保留,暂无特别作用的临时性变量。序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
volatile(易失修饰符)修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。 指定该变量可以同时被几个线程控制和修改。
方法修饰符:
public(公共控制符)
private(私有控制符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)
protected(保护访问控制符)指定该方法可以被它的类和子类进行访问。
final,指定该方法不能被重载。
static,指定不需要实例化就可以激活的一个方法。用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
abstract 抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
synchronize,同步修饰符,关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。
native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。