一.访问修饰符
本类 | 同一包下(子类,无关类) | 不同包下子类 | 不同包下无关类 | |
public | Y | Y | Y | Y |
protected | Y | Y | Y | |
默认(default) | Y | Y | ||
private | Y |
默认修饰符主要用于同一个包下,protected主要用于子类
二.状态修饰符
static:在有数据要共享时用static修饰。static有以下特点:
(1)被static修饰的方法,变量叫做静态方法,静态变量。
(2)被static修饰过后将脱离对象而存在,随着类加载而加载,可以直接用类名去访问。
(3)static修饰的方法里只能调用静态变量和静态方法,而普通方法既可以调用普通方法也可以调用静态方法
(4)成员变量与静态成员变量区别
所属关系 | 内存 | 调用方式 | 生命周期 | |
静态成员变量 | 属于类,也叫做类成员 | 在方法区的静态区里 | 直接用类名调用 | 随着类加载而加载,随着类消失而消失 |
成员变量 | 依赖于对象,属于对象 | 在各自的堆中 | 通过对象来获取 | 和对象同步,对象消失,成员变量也就消失了 |
final:
(1)final修饰的类变为最终类,不能被继承,不能被重写
final修饰的方法变成最终方法,不能被重写和重载
final修饰的变量变成常量,不能被修改
(2)基本数据类型被final修饰,不能修改的是值
引用数据类型被final修饰,不能修改的是地址
(3)final不能修饰构造函数。
三.抽象修饰符
abstract:可以修饰类,方法,修饰类变成抽象类,修饰方法变成抽象方法,没有方法体。
四.总结
各个修饰符应用场景:
访问修饰符 | 状态修饰符 | 抽象修饰符 | |
类 | public,默认(内部类中可以用Private) | final | abstract |
成员变量 | public,默认,protected,private | static,final | 不可以 |
成员方法 | public,默认,protected,private | static,final | abstract |
构造函数 | public,默认,protected,private | 不可以 | 不可以 |