加载中...
加载中...
Java修饰符总结

Java修饰符总结 原创

Java修饰符总结

访问控制修饰符

修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其他包
public  
YYYYY
protected  
YYYY/N(具体说明)N
default  
YYYNN
private  
YNNNN

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。

public : 对所有类可见。使用对象:类、接口、变量、方法。  

  • protected : 对同一包内的类和所有子类可见。使用对象:变.量、方法。不能修饰类(外部类)

特别说明:        
(1)父类的protected成员,是包内可见的,并且对子类可见。
(2)若子类与父类部不同包,那么在子类中,子类实例可以访问从父类继承过来的protected成员,而不能访问父类实例的protected成员,(static的protected就失效了)。
  • default (即默认): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。    

  • private : 在同一类内可见。使用对象:变量、方法。 不能修饰类(外部类)  


类和方法缺省修饰符,默认是什么?

Class:Default Modifier internal

Function:Default Modifier private

internal 是在程序集内部中可见。

public 无限制的。


用访问控制符来修饰类,修饰方法,修饰属性,修饰代码块。

修饰类:

顶级类(最上面一层的类)只能用public 修饰,顶级类不能使用private 和protected 修饰。

外部类可以被public修饰或者default默认不写,不能用private和protected。

内部类可为静态static,可用protected和private修饰。

修饰方法:

一般的方法和构造方法都可以被四个访问修饰符修饰。

抽象类中的抽象方法不能被private修饰,可以被其他三个修饰。

而接口中的方法只能被public修饰(默认也是public)。

修饰属性:

属性可以被四个修饰符修饰,

但是接口中的属性只能被public修饰(默认也是public)。

修饰代码块:

代码块不能被任何修饰符修饰(因为在代码块里面的属性和方法都有自己的修饰符)。

构造代码块的作用:可以初始化非静态属性,构造代码块优先于构造函数执行,可以放在构造函数中。

静态代码块的作用:可以初始化静态属性,类加载时加载,不可以放在构造函数中。

其他修饰符

修饰符final:

修饰类:最终类,最终类不能被继承。

修饰方法:用final修饰的方法不能被继承,不能被重写,但是可以重载。

常量:定义局部常量用final,定义全局常量用static final (或者final static)。

修饰符static: 

修饰类:可以修饰内部类

修饰属性:static可以修饰任何属性。

修饰方法:不能修饰抽象方法,不能修饰构造方法。

修饰代码块:被修饰的代码块叫静态代码块。

修饰符abstract  

修饰类(是抽象类):抽象类不能被实例化。抽象类是用来被继承的。

修饰方法(抽象方法):修饰的方法叫做抽象方法,只有方法的声明,没有方法的实现。

不能修饰:不能修饰属性、私有方法、构造器、静态方法、final 方法。

修饰符synchronized

synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。

修饰符transient

序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。

该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型。

修饰符volatile 

volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。一个 volatile 对象引用可能是 null。


没有更多推荐了 [去首页]
image
文章
357
原创
284
转载
73
翻译
0
访问量
199063
喜欢
47
粉丝
6
码龄
5年
资源
0

文章目录

加载中...
0
0