1.访问修饰符
修饰符 | 当前类 | 同一包中其他类 | 子孙类 | 其他包 | 说明 |
public | 可以访问 | 可以访问 | 可以访问 | 可以访问 | 可以被任何对象的方法访问 |
protected | 可以访问 | 可以访问 | 可以访问 | 不可访问 | 受保护的类型仅在同一个包中的类以及所有子类可以访问 |
private | 可以访问 | 不可访问 | 不可访问 | 不可访问 | 只有自己类中的方法可以访问 |
default | 可以访问 | 可以访问 | 不可访问 | 不可访问 | 不使用其他修饰符时类的默认类型,只可以是同一个包中的类才能访问 |
2.类修饰符
修饰符 | 名称 | 说明 |
abstract | 抽象类 | 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现 |
public | 公共类 | 可以被任何对象访问 |
final | 最终类 | 不能被其他类继承 |
friendly | 默认类 | 只有相同包中的对象才能访问 |
3.成员变量修饰符
修饰符 | 名称 | 说明 |
public | 公共访问控制符 | 指定该变量为公共的,他可以被任何对象的方法访问 |
private | 私有访问控制符 | 指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问 |
protected | 保护访问控制符 | 指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量 |
static | 静态修饰符 | 指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个类 |
volatile | 易失修饰符 | 指定该变量可以同时被几个线程控制和修改 |
final | 最终修饰符 | 指定此变量的值不能变 |
friendly | 默认 | 在同一个包中的类可以访问,其他包中的类不能访问 |
4.方法修饰符
修饰符 | 名称 | 说明 |
public | 公共控制符 | |
private | 私有控制符 | 指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类) |
protected | 保护访问控制符 | 指定该方法可以被它的类和子类进行访问 |
final | 最终修饰符 | 指定该方法不能被重载 |
static | 静态修饰符 | 指定不需要实例化就可以激活的方法 |
synchronize | 同步修饰符 | 在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁 |
native | 本地修饰符 | 指定此方法的方法体是用其他语言在程序外部编写的 |
Volatile修饰符:
Volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
一个 volatile 对象引用可能是 null。
实例:
public class MyRunnable implements Runnable
{
private volatile boolean active;
public void run()
{
active = true;
while (active) // 第一行
{
// 代码
}
}
public void stop()
{
active = false; // 第二行
}
}