Java的类、成员变量、成员方法的修饰符

时间:2022-12-12 12:01:21

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程序。