Java修饰符主要分两类:访问修饰符和非访问修饰符

访问控制修饰符

(1)default(即默认,什么也不写):在同一包内可见,不适用任何修饰符。使用对象:类、接口、变量、方法。
(2)private:在同一类内可见。使用对象:变量、方法。注意:不能修饰类(外部类)
(3)public:对所有类可见。使用对象:类接口、变量、方法
(4)protected:对同一包内的类和所有子类可见。使用对象:变量、方法。注意不能修饰类(外部类)

访问控制

修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包
public Y Y Y Y Y
protected Y Y Y Y/N(说明 N
default Y Y Y N N
private Y N N N N

image.png

注意:
(1)接口中的变量都隐式声明为public static final,并且默认访问权限都是public

访问权限和继承

(1)父类中声明为public的方法在子类中也必须为public
(2)父类中生命为protected的方你发在子类中要么声明为protected,要么声明为public,不能为private
(3)父类中生米那个为private方法,不能够被继承(异议:反射可见有)

非访问修饰符

(1)static修饰符,用来修饰类方法和类变量
(2)final修饰符,用来修饰类、方法和变量,final修饰的类不能被继承,修饰的方法不能被继承的类重新定义。修饰的变量为常量,不能被修改。
(3)abstract修饰符,用来创建抽象类和抽象方法。
(4)synchronize和volatile修饰符,主要用于线程编程
(5)transient修饰符。序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。