##### Java修饰符
- 访问修饰符
- 非访问修饰
访问修饰符
修饰符 | 当前类 | 当前包 | 不同包的子类 | 不通包 |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | |
default | Y | Y | ||
private | Y |
如上表格清晰的展示访问修饰符的访问权限。
- private 的访问级别是最严格的,被声明为private 的方法、变量和构造方法只能被当前类访问,如果外部需要访问被声明为private的变量,只能通过类中的公共的getter和setter方法。并且接口和类不能声明为private!
- protected 的作为可以说是保护不想管你的类访问使用被声明为protected的方法和变量。protected不能修饰类和接口,接口中的成员变量和方法也不可以声明为protected,类中的可以!
非访问修饰符
- static,创建类方法和类变量
- final,修饰类、方法和变量;final修饰的类不能被继承,修饰方法不能被被继承类重新定义,修饰的变量为常量,不能修改!
- abstract, 创建抽象类和抽象方法!
- synchronized和volatile,用于线程的编程。
static修饰符
static方法
static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量,静态方法从参数列表获取数据。
static变量
static用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝;静态变量也被称为类变量,所以局部变量不能声明为static。
final修饰符
- final类
final类不能被继承。
- final方法
声明为final的方法目的在于防止该方法被修改,类中的final方法可以被继承,但是不能被子类修改。
- final变量
final变量能被显示的初始化一次,被声明的final的对象的引用不能指向不同的对象,但是的final对象里面的数据可以被改变,也就是final对象的引用不能被改变,但是里面的值可以改变。
abstract修饰符
- abstract类
抽象类不能用来实例化对象,抽象类被声明出的唯一目的是对该类进行扩充!
一个类不能同时被final和abstract修饰。当该类中有抽象方法,则该类必须被声明为抽象类,否则编译错误!
抽象类可以包含抽象方法和非抽象方法!
- abstract方法
抽象方法是一种没有任何实现的方法,该方法的具体实现由子类提供。
抽象方法不能被声明为static和final。
继承抽象类的子类必须实现该抽象类的所有抽象方法,除非该类也是抽象类。
一个类如果包含抽象方法,则必须被声明为抽象类,但是抽象类中不一定需要抽象方法。
抽象方法的声明以分号结束:public abstract sample();。