news 2026/5/11 17:30:55

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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?spm=5176.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/成员变量)的书写顺序:

[访问修饰符] [非访问修饰符] 类型 变量名 [= 初始值];

总结:

场景规则
访问修饰符只能写一个:publicprotectedprivate或默认(不写)
implements/extends写在类名之后,不属于修饰符,所以不在修饰符顺序中
格式:class A extends B implements C, D
interface是关键字,不是修饰符。定义接口时用:
public interface MyInterface
void/ 返回类型必须紧挨着方法名之前,不能放在修饰符中间
非法组合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共存)

组合是否合法说明
abstract+final抽象要被继承,final 禁止继承 → 矛盾
abstract+static❌(方法)抽象方法需被重写,static 方法不能被重写
abstract+private❌(方法)private 方法无法被子类访问,无法实现抽象
final+static常量(如public static final int MAX = 100;
synchronized+static锁的是类对象(Class.class
native+abstractnative 有外部实现,abstract 无实现 → 冲突
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 16:22:01

填志愿/选方向必看!计算机18大专业的终极选择攻略

一次搞懂计算机类18个本科专业方向的区别,谁是“宝藏”谁是“天坑”? 随着科技进步的日新月异,互联网在日常生活中所扮演的角色越来越重要。数字化、信息化的时代里,计算机类专业无疑是当今高考最热门且最具发展前景的志愿填报方…

作者头像 李华
网站建设 2026/5/10 22:14:37

ABP框架07.在 DDD中把查询作为可演进的契约

数据查询进阶(上)&#xff1a;作者热度榜报表与 Dapper 的“可控查询” 哈喽&#xff0c;我是黑棠 在CRUD中&#xff0c;通用仓储 IRepository<T> EF Core 的查询表达式&#xff0c;足以覆盖列表、详情、简单筛选。 但在“报表类查询”里&#xff0c;常见的痛点不是写不…

作者头像 李华
网站建设 2026/5/9 20:23:00

孤能子视角:“智慧物流“

第一步&#xff1a;分析“作者”——智慧物流体系&#xff08;作为“供应链生命共同体”的超级孤能子&#xff09;启动&#xff1a;三力逼问&#xff0c;定位张力1. 零预设&#xff1a;不预设智慧物流是“运输自动化”或“信息化”&#xff0c;视其为全球贸易与数字技术双重浪潮…

作者头像 李华
网站建设 2026/5/10 7:50:16

别再用老话术!工厂老板吃这套沟通技巧

"我们质量好、价格优、服务到位",这类话术啊,工厂老板早就听腻了&#xff0c;他每天都被无数销售包围着,真正能让他愿意停下脚步的,不是你的产品有多厉害,而是你懂他的生意、能帮他算清账、还能解决他的难题。一、开口不谈"我",先说"你不好的话术: &q…

作者头像 李华
网站建设 2026/5/10 16:35:42

制造大数据应用在哪些工业场景中最值得推荐?

一家汽车焊装车间里&#xff0c;报警灯突然闪烁。某条焊缝的电阻值比历史平均值偏了0.3欧姆——这数字大多数人压根看不懂&#xff0c;系统却已经推送了三套方案&#xff1a;调焊枪压力、换电极帽、查夹具磨损。工程师没打电话&#xff0c;也没翻手册&#xff0c;只是在手机上敲…

作者头像 李华