java的中的常用访问修饰符有public,protected,private,static,final,abstract,violate, transient,native,strictfp,;其中最后四个不常用,现将他们的修饰对象归纳如下:
类 | 成员变量 | 方法 | |
public | 是 | 是 | 是 |
protected | 只有内部类可以 | 是 | 是 |
private | 只有内部类可以 | 是 | 是 |
static | 否 | 是 | 是 |
final | 是 | 是 | 是 |
abstract | 是 | 否 | 是 |
violate | 否 | 是 | 否 |
transient | 否 | 是 | 否 |
native | 否 | 否 | 是 |
strictfp | 是 | 否 | 是 |
ps:
类 | 成员变量 | 方法 | |
默认(default) | 是 | 是 | 是 |
synchonized | 否 | 否 | 是 |
1.一个类文件只能有一个public class,且两者名称相同;其余的类为default前缀,只能为同一包的类访问;
2.native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于借口方法。Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。
3.strictfp修饰类和方法,意思是FP-strict,精确浮点,符合IEEE-754规范的。当一个class或interface用strictfp声明,内部所有的float和double表达式都会成为strictfp的。Interface method不能被声明为strictfp的,class的可以。
4.transient变量修饰符。标记为transient的变量,在对象存储时,这些变量状态不会被持久化。当对象序列化的保存在存储器上时,不希望有些字段数据被保存,为了保证安全性,可以把这些字段声明为transient。
5.volatile修饰变量。在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
其它补充:接口的成员变量的默认修饰符是public static final,最后要给变量赋值; 成员函数的默认修饰符是 public abstract, 并且都可以省略不写,最后不用加{}。
[public][static][final] 域类型 域名 = 常量值;
[public][abstract] 返回值类型 方法名(参数列表)
[throws 异常列表];