Java中,方法/类的修饰符的书写位置

📅 发布时间:2026/7/8 22:10:07 👁️ 浏览次数:
Java中,方法/类的修饰符的书写位置
一.书写顺序含类、方法、字段在Java中方法的修饰符和返回类型的书写顺序是有规定的如main方法中正确且标准的写法是public static void main(String[] args){ ... }这是Java社区、官方文档、IDE如Intellij IDEA、Eclipse默认生成的写法也是最清晰、最广泛接受的顺序其他合法的写法语法上正确但不推荐Java允许public和static交换顺序因为它们属于不同类别的修饰符如static public void main(String[] args) // 语法上正确但不推荐这样书写根据Java语言规范Chapter 8. Classeshttps://docs.oracle.com/javase/specs/jls/se17/html/jls-8.html?spm5176.28103460.0.0.49d17551ApEHpJ#jls-8.4.3方法的修饰符顺序是任意的只要访问修饰符最多能有一个public / protected / private非访问修饰符如static、final、等可以有多个返回类型如void必须在方法名之前必须紧挨方法名不能在修饰符和方法名中间[访问修饰符] [非访问修饰符] 返回类型 方法名()其中[]表示可以有也可以没有这是业界普通约定俗成的书写顺序类的书写顺序为[访问修饰符] [非访问修饰符] class ClassName [extends ...] [implements ...]如public final class StringUtils implements Serializable, Cloneable而下面这种写法合法但不推荐final public class StringUtils implements Serializable // ❌ 顺序混乱字段Filed/成员变量的书写顺序[访问修饰符] [非访问修饰符] 类型 变量名 [ 初始值];总结场景规则访问修饰符只能写一个public、protected、private或默认不写implements/extends写在类名之后不属于修饰符所以不在修饰符顺序中格式class A extends B implements C, Dinterface是关键字不是修饰符。定义接口时用public interface MyInterfacevoid/ 返回类型必须紧挨着方法名之前不能放在修饰符中间非法组合private abstract method()❌abstract方法必须被子类实现不能私有static abstract method()❌Java 8 前不允许Java 8 的static方法不能是abstract二.Java中的非访问修饰符在 Java 中非访问修饰符Non-Access Modifiers是用于定义类、方法、变量等的行为、生命周期或特殊语义的关键字它们不控制访问权限那是public/protected/private的职责而是提供额外的功能特性修饰符可用于作用说明static类、方法、字段、代码块、嵌套类表示属于类本身而非实例可直接通过类名访问final类、方法、字段、局部变量表示“不可变”类不能被继承方法不能被重写变量值不能更改abstract类、方法抽象类不能实例化、抽象方法无实现必须由子类实现synchronized方法、代码块保证线程安全同一时间只有一个线程可执行该方法/代码块volatile字段保证多线程下变量的可见性每次读都从主存取不缓存transient字段标记字段不参与序列化如密码字段native方法表示方法由本地代码如 C/C实现通常通过 JNI 调用strictfp类、方法保证浮点运算在不同平台结果一致IEEE 754 标准注意某些修饰符有使用限制如abstract不能和final共存组合是否合法说明abstractfinal❌抽象要被继承final 禁止继承 → 矛盾abstractstatic❌方法抽象方法需被重写static 方法不能被重写abstractprivate❌方法private 方法无法被子类访问无法实现抽象finalstatic✅常量如public static final int MAX 100;synchronizedstatic✅锁的是类对象Class.classnativeabstract❌native 有外部实现abstract 无实现 → 冲突