首页 > 代码库 > Java修饰符/关键字
Java修饰符/关键字
修饰符分类:
- 权限修饰符:public、protected、default、private
- 其他修饰符:abstract、static、final、transient、volatile、native、synchronized、strictfp
public:
- public的使用对象:public可以修饰 类、抽象类、接口,还可以修饰 方法和变量
- public修饰的对象可以被所以其他类访问
protected:
- protected的使用对象:protected可以修饰 方法和变量,不能修饰类(外部类) ,内部类较特殊,后面单独研究。
- protected修饰的对象可以被 同一包内的类或它的子类所访问
default:
- default的使用对象:default可以修饰 类、抽象类、接口,还可以修饰 方法和变量
- default修饰的对象可以被 同一包下的类访问
private:
- private的使用对象:private可以修饰 方法和变量,不能修饰类(外部类)
- private修饰的对象只在该类内部可见,外部不可访问,包括他的子类也不能访问、不能覆盖
换个角度看:
- 类、抽象类、接口可以被public、default修饰
- 方法和变量可以被public、protected、default、private所有权限修饰符修饰
Q&A:
- Q:为什么类不能被private、protected修饰?
- A:private好理解,private的类完全孤立不能为外界所访问,毫无用处;就类而言如果被protected修饰时等价于default,其他的包的类根本无法引用它而产生子类
abstract:
- abstract用于修饰 类、接口或方法
- abstract修饰的类即抽象类不能初始化,含未实现即abstract的方法
- 所有的接口默认是abstract的,当然也可以显示用abstract修饰
final:
- final用于修饰 类、变量或方法
- final类不能被继承、final变量不能被修改、final方法不能被覆盖
- final变量必须初始化,可以在声明时或构造函数里面赋值
- final变量如果是引用变量,变量的value可变,但不能给引用重新赋值(新对象)
- final变量如果同时被static修饰,那必须在声明时初始化,不能放到构造函数
- 构造函数里面调用的方法最好是final的
- Oracle Tutorial: http://docs.oracle.com/javase/tutorial/java/IandI/final.html
class FinalTest{ private final List foo = new ArrayList();// public FinalTest() { //foo = new ArrayList(); 如果声明时没有初始化,可以在这里初始化 } public void updateFoo(){ foo.add( new String() );//可以改变被应用对象的值 //foo = new ArrayList(); //编译错误,不能赋予新的对象 }}
static:
- static可修饰 变量、方法块,不能修饰外部类
- static的变量或方法属于具体的类,而不是某个实例,所有实例共享该变量或方法,实例可以改变static变量,也可以通过类名直接调用
- static的方法不能直接访问 实例变量或方法,static方法里面也不能使用this
transient:
native:
volatile:
strictfp:
synchronized:
Java修饰符/关键字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。