一.访问修饰符

  本类 同一包下(子类,无关类) 不同包下子类 不同包下无关类
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 不可以 不可以