修饰符是改变类、方法、变量或常量特性的关键字,通常分为访问权限修饰符和非访问权限修饰符。
一、访问权限修饰符
访问权限修饰符分为四种,分别是public、protected、default、private。访问修饰符是一种用于控制类、属性和方法访问权限的关键字,使用不同的访问修饰符,可以控制方法和属性的访问范围。还可以通过使用适当的访问修饰符,实现封装、隐藏以及限制对类和成员的访问,从而提高代码的安全性和可维护性。
-
public(公共访问修饰符):具有最大的访问权限,可以访问CLASSPATH下任何的类、接口和异常,主要用于对外提供调用的形式。
-
protected(受保护的访问修饰符):允许同一包的类以及子类访问,它修饰的方法、属性可以由子类继承
-
default(默认的访问修饰符):不指定修饰符即为默认访问修饰符,被修饰的类、接口、属性只能被本包下的类访问。
-
private(私有的访问修饰符):修饰的方法和变量仅本类可以访问,主要用于封装,提高代码的安全性。
二、非访问权限修饰符
- final(最终的):通常用于修饰类、方法以及变量,修饰的类无法被子类继承,修饰的方法不能被重写,修饰的变量不能重新赋值。
- static(静态的):用于修饰方法和变量,修饰后方法和属性会被放在永久方法区中,随着类的加载而加载。static修饰的方法可以直接通过类名调用,可以不通过对象调用。
- abstract (抽象的):用于修饰抽象类以及抽象方法,抽象类不能被实例化,通常用于提供模版或约束。抽象方法是没有实现的方法,不包含方法体,主要用于被子类实现。
- synchronize(同步的):用于控制线程访问,被synchronize修饰后同一时间只能有一个线程访问。
-
volatile(易变的):用于保证不同线程的同一个成员变量的值是相同的。volatile修饰后会告诉编译器和处理器不要对该变量进行优化,从而确保每次访问该变量都是从内存中读取最新的值,而不是使用缓存中的旧值。
-
transient(瞬态的):用于标记类的成员变量。 transient 修饰后,变量不会被序列化,即在对象被序列化为字节流时,变量的值不会被保存。用于保护敏感数据或临时数据,避免它们被持久化保存