1. 类的修饰符
修饰符 包外 子类 包内 类内
public Yes Yes Yes Yes
protected Yes Yes Yes
default Yes Yes
private Yes
abstract: 将一个类声明为抽象类,抽象类里abstract的方法不能实现,需要子类提供实现。
final :将一个类声明为最终类,表示它不能被其他类继承。
static:通常一个类不允许声明为静态的,只有一个内部类才可以,这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。
2. 成员变量修饰符
public::它可以被任何对象的方法访问。
protected:该变量可以被同一包内的类和子类访问,在子类中可以覆盖此变量。
default:在同一包中的类可以访问,其他包中的类不能访问。
private:该变量只允许自己的类的方法访问,其他任何类中的方法均不能访问。
static:指定该变量被所有对象共享。
transient:指定该变量时系统保留,暂无特别作用的临时性变量。
volatile:指定该变量可以同时被几个线程控制和修改,即线程安全的。
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。因此只应在必须的时候才用,它会降低性能。
3. 方法修饰符
public:公共控制符,指定该方法可以被任何对象的方法访问。
protected:指定该方法可以被它包内的类和子类访问。
default:指定该方法可以被其包内的类访问。
private:指定此方法只能有自己类内方法访问,其他类不能访问(包括子类)。
final:指定该方法不能被重载。
static:指定不需要实例化就可以激活的方法。
synchronize:同步修饰符,在多线程中,该修饰符用于在运行该方法的同步块时,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。
native:本地修饰符,指定此方法的方法体是其他语言在程序外部编写的,比如是由C语言编写的,则java可以通过jvm去调用c程序。